2017年5月23日 星期二

S小魚仔S Centos 7 搭建 Tesseract OCR 圖文辨識系統 (一)

光學字符識別(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」字元庫


參考資料

沒有留言:

張貼留言