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