使用Python進行OCR -- 識別圖片中的文字


朋友需要一個工具,將圖片中的文字提取出來。我幫他在網上找了一些OCR的應用,都不好用。所以准備自己研究,寫一個Web APP供他使用。

OCR1,全稱Optical character recognition,或者optical character reader,中文譯名叫做光學文字識別。它是把圖像文件中的手寫文本,打印文本轉換為機器編碼文本的一種方法。

OCR技術廣泛用於識別打印紙張中的文字數據 -- 比如護照,支票,銀行聲明,收據,統計表單,郵件等。OCR的早期版本,需要對圖片中的每個文字都進行訓練,一次只能作用於一種字體。高級的版本增加了很大的識別率,可以同時識別現在很多流行的字體,支持不同種類格式的圖片文件。一些系統可以生成接近於原來圖片格式的輸出,包括圖片,排版,以及其它非文本組件,這也叫做版面還原

工具

Tesseract

現在最出名,最常用的OCR就是谷歌的tesseract OCR engine2。最新的版本是Tesseract4。Tesseract的主要開發者是Ray Smith3.

Tesseract支持unicode(UTF-8),安裝后即可識別超過100種語言。

Tesseract支持不同的輸出可是:普通文本,hOCR(html),PDF,TSV,invisible-text-only PDF。在master分支,還試驗性地支持ALTO(XML)格式。

請記住,在大多數情況下,為了獲得更好的OCR結果,你需要為提供給Tesseract的圖片提升質量4.

Tesseract可以通過訓練來識別其它語言和其它字體5.

另外,有很多第三方的Tesseract GUI應用。可以直接下載使用6

pytesseract

Python-tesseract7(pytesseract)是Google Tesseract ORC引擎的封裝。首次commit的2014年。用這個庫,可以很方便地編寫腳本,可以用它來識別所有可以由PIL識別的圖片格式,包括jpeg, png, gif, bmp, tiff等, 而tesseract-orc本來只支持tiff和bmp兩種格式。

如果在腳本中使用,識別的文本可以輸出為Python字符串,而不是直接輸出到文件中。

另外,這個代碼庫只有一個文件,400行代碼。如果有任何疑問,可以直接翻看源代碼。

tesserocr

tesserocr8也是一個TesseractOCR的封裝庫。它的首次commit是2015年。

這個庫相對於pytesseract的優勢在於9,這個庫是使用Cython來直接調用Tesseract的C++ API。使用它和threading模塊來處理圖片,可以釋放GIL,達到真正的並發執行。

但是我更喜歡pytesseract,因為它的API更加的pythonic。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM