1. 程式人生 > >【Tesseract-OCR】玩轉OCR中文識別

【Tesseract-OCR】玩轉OCR中文識別

一、準備工作:
1、下載Tesseract-OCR引擎,注意要3.0以上才支援中文哦,按照提示安裝就行。
2、下載chi_sim.traindata字型檔。要有這個才能識別中文。下好後,放到Tesseract-OCR專案的tessdata資料夾裡面。

二、識別
1、進入cmd,進入到要識別的圖片的路徑下。
2、輸入命令
tesseract 圖片名稱 生成的結果檔案的名稱 字型檔
例如我的圖片識別就是:

tesseract test.jpg result -l chi_sim

三、訓練資料
1、將圖片轉換成tif格式,用於後面生成box檔案。可以通過畫圖,然後另存為tif即可。
更改圖片名字,這個是有要求的=。=
tif文面命名格式[lang].[fontname].exp[num].tif
lang是語言 fontname是字型
比如我們要訓練自定義字型檔 mjorcen字型名normal
那麼我們把圖片檔案重新命名 mjorcen.normal.exp0.jpg在轉tif。

2、生成box檔案。

tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox

box檔案和對應的tif一定要在相同的目錄下,不然後面打不開。

3、開啟jTessBoxEditor矯正錯誤並訓練

開啟train.bat
這裡寫圖片描述

找到tif圖,開啟,並校正。

這裡寫圖片描述

4、訓練。

tesseract  mjorcen.normal.exp0.jpg mjorcen.normal.exp0  nobatch box.train
unicharset_extractor mjorcen.normal
.exp0.box

新建一個font_properties檔案

裡面內容寫入 normal 0 0 0 0 0 表示預設普通字型

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.

如圖:
這裡寫圖片描述

命令列輸入,合併五個檔案:

combine_tessdata normal.

得到訓練好的字型檔。

五、測試

1、把 normal.traineddata 複製到Tesseract-OCR 安裝目錄下的tessdata資料夾中
2、識別命令:

tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l normal

識別成功,效果:

這裡寫圖片描述

這裡寫圖片描述

3、pycharm 程式實現

#-*-coding:utf-8-*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import time
time1 = time.time()
import pytesseract
from PIL import Image

img1 = Image.open(r'E:/mjorcen.normal.exp0.jpg')
code = pytesseract.image_to_string(img1,lang="normal")
print(code)

time2 = time.time()
print u'總共耗時:' + str(time2 - time1) + 's'

這裡寫圖片描述