摘要:目前已作為開源項(xiàng)目發(fā)布在,其最新版本已經(jīng)支持中文,并提供了一個(gè)命令行工具。他能夠用來識(shí)別英文,但是不能識(shí)別中文。所以要下載中文的識(shí)別包這樣就能識(shí)別中文。至少對印刷的中文字識(shí)別效果是很好的。
1. Tesseract 介紹
Tesseract的OCR引擎最先由HP實(shí)驗(yàn)室于1985年開始研發(fā),至1995年時(shí)已經(jīng)成為OCR業(yè)內(nèi)最準(zhǔn)確的三款識(shí)別引擎之一。然而,HP不久便決定放棄OCR業(yè)務(wù),Tesseract也從此塵封。
數(shù)年以后,HP意識(shí)到,與其將Tesseract束之高閣,不如貢獻(xiàn)給開源軟件業(yè),讓其重?zé)ㄐ律?005年,Tesseract由美國內(nèi)華達(dá)州信息技術(shù)研究所獲得,并求諸于Google對Tesseract進(jìn)行改進(jìn)、消除Bug、優(yōu)化工作。
Tesseract目前已作為開源項(xiàng)目發(fā)布在Google Project,其最新版本3.0已經(jīng)支持中文OCR,并提供了一個(gè)命令行工具。
2. Tesseract 安裝Tesseract 可以在 linux、windows 和 macOS 下使用。這里以 macOS 為例。
2.1 使用 homebrew 安裝 Tesseract 同時(shí)安裝訓(xùn)練工具:brew install --with-training-tools tesseract
雖然官方提供了多種語言的識(shí)別數(shù)據(jù)包,但是在很多情況下都需要在其基礎(chǔ)上自己進(jìn)行訓(xùn)練,所以記得安裝訓(xùn)練工具
2.2 安裝語言識(shí)別包從官網(wǎng)地址下載對應(yīng)的識(shí)別包 [官網(wǎng)地址](https://github.com/tesseract-...
) 比如中文識(shí)別選擇 chi_sim 這個(gè)包
再將識(shí)別包放置到系統(tǒng)的相應(yīng)目錄中,比如我用 hoembrew 安裝,地址位于:
2.3 下載訓(xùn)練工具/usr/local/Cellar/tesseract/3.05.01/share/tessdata
tesseract 的好處就在能夠自己訓(xùn)練需要識(shí)別的字符,如果只是識(shí)別印刷字體這樣的需求還是調(diào)用 API 比較方便,比如說百度云的文字識(shí)別 API。
要進(jìn)行訓(xùn)練就下載 jTessBoxEditor 樣本訓(xùn)練工具
3. 基本概念 3.1 基本命令查看版本
tesseract -v
查看幫助
tesseract --help
進(jìn)行識(shí)別的命令
3.2 語言識(shí)別包tesseract in.jpg out.txt -l chi_sim -psm 6
in.jpg:需要識(shí)別的圖片
out.jpg:圖片的結(jié)果輸出到的位置
-l:后跟用于進(jìn)行識(shí)別的數(shù)據(jù)包,這里是中文
-psm:識(shí)別方式
查看已有的語言識(shí)別包
?libai tesseract --list-langs List of available languages (4): chi_sim eng libai number
語言識(shí)別的包是識(shí)別的基礎(chǔ),下載之后默認(rèn)自帶的是 eng.traineddata 英文識(shí)別包。他能夠用來識(shí)別英文,但是不能識(shí)別中文。所以要下載中文的識(shí)別包 ch_sim.traineddata 這樣就能識(shí)別中文。但是發(fā)現(xiàn)準(zhǔn)確率不高,不符合需求就要訓(xùn)練自己的包。
總之核心就在 traineddata 文件。
3.3 psm的參數(shù)psm 的參數(shù)很重要,表示 tesseract 識(shí)別圖像的方式,比如說是一行一行識(shí)別還是逐字識(shí)別。希望逐字識(shí)別可以使用 -psm 10,希望逐行識(shí)別可以使用 -psm 6,其他沒怎么用以后有機(jī)會(huì)補(bǔ)充。總之,希望有更好的識(shí)別效果需要選擇合適的 psm。
tesseract --help-psm 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.
谷歌翻譯結(jié)果,自己嘗試一下會(huì)有體會(huì)
方向和腳本檢測(OSD)。 1自動(dòng)頁面分割與OSD。 2自動(dòng)頁面分割,但沒有OSD或OCR。 3全自動(dòng)頁面分割,但沒有OSD。 (默認(rèn)) 4假設(shè)單列可變大小的文本。 5假設(shè)一個(gè)垂直對齊的文本的統(tǒng)一塊。 6假設(shè)單個(gè)統(tǒng)一的文本塊。 7將圖像視為單個(gè)文本行。 8將圖像視為單個(gè)字。 9將圖像視為一個(gè)單個(gè)的單詞。 10將圖像視為單個(gè)字符。4. 識(shí)別與訓(xùn)練 4.1 識(shí)別
tesseract libai.jpg libai -l chi_sim -psm 6
抹甫曰月閆充, 屁是訛上霜; 亭孰塑明汛 佃爽崽故歹o
顯然準(zhǔn)確率不高,進(jìn)行訓(xùn)練。
4.2 訓(xùn)練1.生成字體文件
打開jTessBoxEditor工具,菜單欄:tools->Merge TIFF...,選中要合成的圖片并保存為為:libai.tif
2.生成 box 文件
tesseract libai.tif libai -l chi_sim -psm 6 batch.nochop makebox
3.利用 jTessBoxEditor 校正
校正之后記得保存。
4.生成.tr文件
tesseract libai.tif libai -psm 6 nobatch box.train
5.生成unicharset文件
unicharset_extractor libai.box
6.創(chuàng)建font_properties文件
echo "font 0 0 0 0 0" > font_properties
7.training
shapeclustering -F font_properties -U unicharset libai.tr
mftraining -F font_properties -U unicharset -O l libai.tr
8.Clustering。產(chǎn)生字符形狀正常化特征文件normproto
cntraining libai.tr
9.重命名文件
mv normproto libai.normproto mv inttemp libai.inttemp mv pffmtable libai.pffmtable mv shapetable libai.shapetable mv unicharset libai.unicharset
10.合并文件生成 traineddata 文件
? libai combine_tessdata libai. Combining tessdata files TessdataManager combined tesseract data files. Offset for type 0 (libai.config ) is -1 Offset for type 1 (libai.unicharset ) is 140 Offset for type 2 (libai.unicharambigs ) is -1 Offset for type 3 (libai.inttemp ) is 855 Offset for type 4 (libai.pffmtable ) is 140145 Offset for type 5 (libai.normproto ) is 140274 Offset for type 6 (libai.punc-dawg ) is -1 Offset for type 7 (libai.word-dawg ) is -1 Offset for type 8 (libai.number-dawg ) is -1 Offset for type 9 (libai.freq-dawg ) is -1 Offset for type 10 (libai.fixed-length-dawgs ) is -1 Offset for type 11 (libai.cube-unicharset ) is -1 Offset for type 12 (libai.cube-word-dawg ) is -1 Offset for type 13 (libai.shapetable ) is 141781 Offset for type 14 (libai.bigram-dawg ) is -1 Offset for type 15 (libai.unambig-dawg ) is -1 Offset for type 16 (libai.params-model ) is -1 Output libai.traineddata created successfully.
11.將文件拷貝到目標(biāo)文件夾
cp libai.traineddata /usr/local/Cellar/tesseract/3.05.01/share/tessdata
12.再次識(shí)別
tesseract libai.jpg trained -l libai -psm 6
? libai cat trained.txt 床前明月光, 疑是地上霜; 舉頭望明月, 低頭思故鄉(xiāng).5. 總結(jié)
tesseract 能夠進(jìn)行 OCR 識(shí)別,但是對中文的支持不夠好。所以如果要更好地識(shí)別中文字體需要進(jìn)行大量的訓(xùn)練,有時(shí)間精力當(dāng)然是一個(gè)方案,沒有的話還是調(diào)用現(xiàn)成的 API 比較好。至少對印刷的中文字識(shí)別效果是很好的。
我寫好的放在 Tesseract 和百度識(shí)別的 Demo
參考資料:
Tesseract 3 語言數(shù)據(jù)的訓(xùn)練方法
使用Tesseract-OCR訓(xùn)練文字識(shí)別記錄
如何使用Tesseract-OCR(v3.02.02)訓(xùn)練字庫 - 作業(yè)部落 Cmd Markdown 編輯閱讀器
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67961.html
摘要:納入深度學(xué)習(xí)模型來進(jìn)一步提升準(zhǔn)確率只是時(shí)間問題,事實(shí)上,這個(gè)時(shí)間已經(jīng)到來。最新版本支持基于深度學(xué)習(xí)的,準(zhǔn)確率顯著提高。該函數(shù)使用基于深度學(xué)習(xí)的文本檢測器來檢測不是識(shí)別圖像中的文本區(qū)域。高效使用概率最高的文本區(qū)域,刪除其他重疊區(qū)域。 By Adrian Rosebrock on September 17, 2018 in Deep Learning, Optical Character ...
摘要:與介紹將圖片翻譯成文字一般被稱為光學(xué)文字識(shí)別,。是目前公認(rèn)最優(yōu)秀最精確的開源系統(tǒng)。我們以圖片為例輸入命令識(shí)別結(jié)果如下只識(shí)別錯(cuò)了一個(gè)字,識(shí)別率還是不錯(cuò)的。最后加一句,對于彩色圖片的識(shí)別效果沒有黑白圖片的效果好。 OCR與Tesseract介紹 ??將圖片翻譯成文字一般被稱為光學(xué)文字識(shí)別(Optical Character Recognition,OCR)。可以實(shí)現(xiàn)OCR 的底層庫并不多,...
摘要:在上一篇博客圖像處理之圖片文字識(shí)別中我們介紹了在中如何利用軟件來識(shí)別圖片中的英文與中文,本文將具體介紹如何在中利用軟件來識(shí)別驗(yàn)證碼數(shù)字加字母。 ??在上一篇博客Python圖像處理之圖片文字識(shí)別(OCR)中我們介紹了在Python中如何利用Tesseract軟件來識(shí)別圖片中的英文與中文,本文將具體介紹如何在Python中利用Tesseract軟件來識(shí)別驗(yàn)證碼(數(shù)字加字母)。??我們在網(wǎng)...
閱讀 3514·2023-04-25 20:09
閱讀 3720·2022-06-28 19:00
閱讀 3035·2022-06-28 19:00
閱讀 3058·2022-06-28 19:00
閱讀 3132·2022-06-28 19:00
閱讀 2859·2022-06-28 19:00
閱讀 3014·2022-06-28 19:00
閱讀 2610·2022-06-28 19:00