1. 程式人生 > >通過Tesseract實現簡單的OCR

通過Tesseract實現簡單的OCR

現在 研究 .tar.gz 安裝 macports nload 代碼 如果 ria

Tesseract 簡介

  Tesseract 的 OCR 引擎最先由 HP 實驗室於 1985 年開始研發,至 1995 年時已經成為 OCR 業內最準確的三款識別引擎之一。然而,HP 不久便決定放棄 OCR 業務,Tesseract 也從此塵封。

  數年以後,HP 意識到,與其將 Tesseract 束之高閣,不如貢獻給開源軟件業,讓其重煥新生。2005 年,Tesseract 由美國內華達州信息技術研究所獲得,並求諸於 Google 對 Tesseract 進行改進、消除 Bug、優化工作。

  目前 Tesseract 作為開源項目發布在 GitHub,其項目主頁在這裏查看,目前的新版本已經支持包括中文在內的超過 60 種語言的 OCR。

安裝 Tesseract

註:因為眾所周知的原因,Google 的相關網址需要FQ訪問。

  1. Windows
    • 訪問下載頁面,名稱為 tesseract-ocr-setup-3.XX.exe 就是 Tesseract 安裝程序,下載並安裝。
    • 下載需要的語言包,例如簡體中文就是 tesseract-ocr-3.02.chi_sim.tar.gz ,將解壓出的chi_sim.trainedata文件復制到tessdata目錄下。程序運行必須包含英語語言包,若tessdata目錄下沒有eng.trainedata文件,請自行下載英語語言包。
  2. 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文件,請自行下載英語語言包。
  3. 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/

通過Tesseract實現簡單的OCR