Tesseract 簡介
Tesseract 的 OCR 引擎最先由 HP 實驗室於 1985 年開始研發,至 1995 年時已經成為 OCR 業內最准確的三款識別引擎之一。然而,HP 不久便決定放棄 OCR 業務,Tesseract 也從此塵封。
數年以后,HP 意識到,與其將 Tesseract 束之高閣,不如貢獻給開源軟件業,讓其重煥新生。2005 年,Tesseract 由美國內華達州信息技術研究所獲得,並求諸於 Google 對 Tesseract 進行改進、消除 Bug、優化工作。
目前 Tesseract 作為開源項目發布在 GitHub,其項目主頁在這里查看,目前的新版本已經支持包括中文在內的超過 60 種語言的 OCR。
安裝 Tesseract
注:因為眾所周知的原因,Google 的相關網址需要翻牆訪問。
- Windows
- 訪問下載頁面,名稱為 tesseract-ocr-setup-3.XX.exe 就是 Tesseract 安裝程序,下載並安裝。
- 下載需要的語言包,例如簡體中文就是 tesseract-ocr-3.02.chi_sim.tar.gz ,將解壓出的chi_sim.trainedata文件復制到tessdata目錄下。程序運行必須包含英語語言包,若tessdata目錄下沒有eng.trainedata文件,請自行下載英語語言包。
- Linux
- 現在很多 Linux 軟件倉庫都已經包含 Tesseract 了,包名一般叫做 tesseract 或者 tesseract-ocr,搜索軟件倉庫並安裝。
- 訪問下載頁面,下載需要的語言包,例如簡體中文就是 tesseract-ocr-XXX.chi_sim.tar.gz,將解壓出的文件chi_sim.trainedata復制到tessdata目錄下(一般為 /usr/share/tesseract-ocr/tessdata or /usr/share/tessdata)。程序運行必須包含英語語言包,若tessdata目錄下沒有eng.trainedata文件,請自行下載英語語言包。
- Mac OS X
- 下載並安裝 MacPorts。
- 使用命令sudo port install tesseract安裝 tesseract。
- 使用命令sudo port install tesseract-<langcode>安裝語言包,各語言的 langcode 可以訪問 MacPorts tesseract page 查看。
- 當然也可以通過 Homebrew 安裝tesseract:brew install tesseract。
使用 Tesseract
Tesseract 是一個命令行程序,命令格式為:
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
參數說明
imagename 就是要識別的圖片文件的名稱,outputbase 就是識別結果輸出文件的名稱。
lang 就是要識別的語言代碼,例如英語為 eng、簡體中文為 chi_sim 等等。可以同時識別多種語言,使用 “+” 相連,例如eng+chi_sim。缺省時識別英語。
pagesegmode 為識別的具體模式,具體包含以下模式:
- 0 = Orientation and script detection (OSD) only.
- 1 = Automatic page segmentation with OSD.
- 2 = Automatic page segmentation, but no OSD, or OCR
- 3 = Fully automatic page segmentation, but no OSD. (Default)
- 4 = Assume a single column of text of variable sizes.
- 5 = Assume a single uniform block of vertically aligned text.
- 6 = Assume a single uniform block of text.
- 7 = Treat the image as a single text line.
- 8 = Treat the image as a single word.
- 9 = Treat the image as a single word in a circle.
- 10 = Treat the image as a single character.
如果想要簡單地識別一張名為 test.png 的圖片並將結果保存至 out.txt 中:
tesseract test.png out
或者采用簡體中文語言包識別
tesseract test.png out -l chi_sim
我嘗試使用 Tesseract 識別下面這張圖片:
使用 Tesseract 識別:
識別結果:
由此可見 Tesseract 對中文的識別很糟糕,畢竟它本來只是用來識別英語的,所以其他文字的識別率都比較差,特別是像漢字這種象形文字,必須要通過手動訓練才能使用。可以參考另一篇文章《Tesseract訓練》。
轉載自http://xiaosheng.me/2015/12/18/article10/