光學字符識別(OCR,Optical Character Recognition)是指對圖片進行掃描,然後對圖像文件進行分析處理,獲取文字及版面信息的過程,Tesseract 的 OCR 引擎最先由 HP 實驗室於1985年開始研發,至1995年時已經成為OCR業內最準確的三款識別引擎之一。然而,HP不久便決定放棄OCR業務,Tesseract 也從此塵封,數年以後,Tesseract 由美國內華達州信息技術研究所獲得,並求諸於 Google 對 Tesseract 進行改進、消除 Bug、優化工作。
當進行「圖文」辨識,不夠精準,必須使用「jTessBoxEditor」工具 ( 需要安裝 JAVA 環境 ),進行「圖文」庫增加 並 放到「字庫」路徑。
~~ 開始進行實作 ~~
;使用「weget」下載「epel-release」資源庫。
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
;安裝「epel-release-latest-7*.rpm」資源庫。
sudo rpm -Uvh epel-release-latest-7*.rpm
#修改「電腦」名稱
hostnamectl set-hostname OCR
#搜尋「tesseract」套件
yum search tesseract
#安裝「tesseract.x86_64」
yum install tesseract.x86_64
#安裝「tesseract-devel.x86_64」和「tesseract-osd.x86_64」
yum install tesseract-devel.x86_64 tesseract-osd.x86_64
#安裝「tesseract-langpack-chi_sim.noarch」簡體字庫語言包
#安裝「tesseract-langpack-chi_tra.noarch」繁體字庫語言包
yum install tesseract-langpack-chi_sim.noarch tesseract-langpack-chi_tra.noarch
#檢查「tesseract」支持的语言
tesseract --list-langs
將「圖文」上傳「Tesseract」服務器,開始進行「圖文辨識」
# 辨識「chin-tra.png」圖片
#「chin-ocr-tra」當前目錄「輸出」.txt
#「chi_tra」(繁體) 為「字庫」位置
tesseract chin-tra.png chin-ocr-tra -l chi_tra
# 辨識「chin-sim.png」圖片
#「chin-ocr-sim」當前目錄「輸出」.txt
#「chi_sim」(簡體) 為「字庫」位置
tesseract chin-sim.png chin-ocr-sim -l chi_sim
#辨識「english.png」圖片
#「eng-ocr」當前目錄「輸出」.txt
#「eng」(英文) 為「字庫」位置
tesseract english.png eng-ocr -l eng
#檢查「結果」
cat eng-ocr.txt
發現「辨識率」不佳,這時候需要使用「jTessBoxEditor」進行「字源庫」增加,首先「瞭解」資料夾結構。
「jTessBoxEditor」目錄有「jTessBoxEditor.jar」和「train.bat」都是「執行檔」
目錄「tesseract-ocr」=>「tesseract.exe」這是負責「進行」圖片解析專用,需配合「Windows Command」帶參數。
將源「圖片」使用「小畫家」另存「tif」格式 並 修改圖片「名稱」。
PS
「tif」命名格式 [lang].[fontname].exp[num].tif
lang = 語言
fontname = 字體
比如我們要訓練自定義字庫「mjorcen」字體名「normal」,那麼我們把圖片來源重命名「mjorcen.normal.exp0.jpg」在轉「.tif」。
使用「Windows Command」配合「tesseract.exe」帶參數,產生「*.box」
tesseract mjorcen.normal.exp0.gif mjorcen.normal.exp0 -l eng batch.nochop makebox
PS
「*.box」和「*.tif」一定要在相同的目錄,否則打不开。
開啟「jTessBoxEditor」工具,進行「字庫」編輯
開啟「*.tif」
打開「*.tif」來源 辨識 字元
修改「*.tif」完成 辨識 字元 並「儲存」( Ctrl+S)
進行「字元庫」封存
tesseract mjorcen.normal.exp0.gif mjorcen.normal.exp0 nobatch box.train
unicharset_extractor mjorcen.normal.exp0.box
封存完會產生「mjorcen.normal.exp0.tr」、「unicharset」
建立「Font_Properties.txt」文字檔,去掉「附檔名」
「Font_Properties」內容寫入「normal 0 0 0 0 0」 表示預設「普通字體」
輸入「Windows Command」指令
shapeclustering -F font_properties -U unicharset mjorcen.normal.exp0.tr
mftraining -F font_properties -U unicharset -O unicharset mjorcen.normal.exp0.tr
cntraining mjorcen.normal.exp0.tr
最後會生成五個文件,把目錄下的「unicharset」、「inttemp」、「pffmtable」、「shapetable」、「normproto」這五個文件前面都加上 「normal.」
輸入「Windows Command」合併「normal.*」五個文件
「combine_tessdata normal.」
「normal.traineddata」就是我們「完成」字庫來源,上傳到「Tesseract」服務器「/usr/share/tesseract/tessdata」位置
PS
「/usr/share/tesseract/tessdata」字元庫
登入「Tesseract」服務器,使用「訓練好的」字庫進行「圖文」辨識,「normal」 就是配對「normal.traineddata」字元庫
參考資料
「wzben」-「Tesseract OCR识别中文与训练字库实例」
「51cto」-「使用 Tesseract-OCR 训练文字识别记录」
「51cto」-「Tesseract Ocr 字符识别基础及训练字库、合并字库」
沒有留言:
張貼留言