2013-03-03 193 views
33

我正在開發一個項目,我必須開發OCR算法(我必須從圖像中讀取文本,然後將其轉換爲不同的語言)。因此,我的第一個任務是從文本圖片。字符識別(OCR算法)

完成第一個任務的步驟。

  1. 從給定源加載任何圖像格式(bmp,jpg,png)。然後將圖像轉換爲灰度並使用閾值(Otsu算法)對其進行二值化。 //完成(如何從輸出圖像除去???噪聲)

結果

Input Image

Output Image

  • 檢測圖像的功能,如分辨率和反演。以便我們最終可以將其轉換爲拉直的圖像以供進一步處理。 (完成圖像旋轉代碼但無法檢測圖像角度,我們必須旋轉圖像,因此仍然在角度檢測部分工作)

  • 線條檢測和刪除。這一步需要改進頁面佈局分析,以獲得更好的識別下劃線文本質量,檢測表格等。(決定完成該部分結束)

  • 頁面佈局分析。在這一步中,我試圖確定圖像中存在的文本區域。所以只有那部分被用於識別,而該區域的其餘部分被排除在外。

  • 檢測文本行和單詞。在這裏我們還需要注意不同的字體大小和單詞之間的小空格。

  • 識別字符。這是OCR的主要算法;必須將每個字符的圖像轉換爲適當的字符代碼。有時這種算法爲不確定的圖像產生幾個字符代碼。例如,識別「我」字符的圖像可以產生「我」,「|」 「1」,「l」代碼和最後的字符代碼將在稍後選擇。

  • 將結果保存爲選定的輸出格式,例如可搜索的PDF,DOC,RTF,TXT。保存原始頁面佈局非常重要:列,字體,顏色,圖片,背景等。

  • 所以我需要在part6.I幫助完成線檢測部(得到n個含有n行的一段圖像),但卡在接下來的部分越來越文字和字符recognisation.If你知道有關OCR良好的聯繫和字符識別部分,然後請張貼在這裏。

    對於字符確定方法①我想用asprise(Java庫)http://asprise.com/product/ocr/index.php?lang=java

    +0

    對於文檔的一部分,你可以使用Apache POI庫http://poi.apache.org/和txt你可以寫你自己的Streamwriter,它不應該這麼難,對於PDF你可以使用http://www.stefanochizzolini.it/en/projects/clown/ PDfClown – Tearsdontfalls 2013-03-03 17:32:13

    +0

    你能否提供一些更多的參考來了解更多關於ocr的信息。 – TLE 2013-03-04 08:42:29

    +0

    OCR是一個成熟和研究的主題。我總是發現這個話題很棒。 http://www.handwritten.net/mv/papers/mori92historical_review_of_ocr_research_and_development.pdf對於OCR分區的問題,特別是這個問題非常有趣http://www.music.mcgill.ca/~ich/classes/mumt611_08/Evaluation/ KanaiPAMI95.pdf。 – 2013-05-11 23:37:11

    回答

    17

    要檢測旋轉角度,使用Hough transformation

    對於降噪,用相同顏色(相似顏色,使用公差閾值)替換任何沒有鄰居(北,東,南或西)的像素與鄰居的平均值。

    搜索佈局檢測的垂直白色間隙。沿垂直間隙切片。對於每個切片,現在搜索水平間隙和切片。如果切片具有相同(相似)的高度,則您處於線條水平。否則,重複垂直/水平切片,直到只剩下線條。最後一步再次是垂直切片,爲您提供單個字符(或在某些情況下爲連字)。線條長而窄或短而寬。

    將字符切片與字符庫進行比較。如果性能不是主要問題,請嘗試在不同字體庫中查找字符,直到您可以識別所使用的字體。然後堅持使用該字體字符識別

    在原始圖像中,將每個字符替換爲背景色,該背景色是通過插入不屬於字符每個像素字符一部分的像素確定的。這給你背景圖片,如果有的話。

    +0

    I想要一些好的噪音去除方法「,用相同顏色替換沒有鄰居(北,東,南或西)的任何像素」並不夠好。 – TLE 2013-06-14 08:16:40

    +0

    如果您有關於字符筆觸寬度的信息,則可以查找更大的羣集。您也可以使用Hough來檢測間隙,所以噪音不會很大。 – nibra 2013-06-14 15:07:54

    +0

    我在字符匹配部分只有60%的準確性我該如何改進? ,用於字符匹配我正在使用我自己的方法來匹配字符圖像。 – TLE 2013-06-20 06:28:34