google Tesseract-ocr配置及訓練
一、配置
1、 從http://code.google.com/p/tesseract-ocr/downloads/list下載tesseract-ocr-3.02-vs2008、tesseract-ocr-3.02.eng.tar、tesseract-ocr-3.02.02.tar、leptonica-1.68-win32-lib-include-dirs相關檔案;
2、 將所有檔案存放在D:\BulidFolder資料夾下並解壓縮;
3、 下載tesseract-ocr-setup-3.02.02.exe,安裝到d盤,生成目錄Tesseract-OCR。
4、 將ccmain資料夾下的equationdetect.cpp
5、 開啟D:\OCR\code\tesseract-ocr\vs2008的
二、訓練新的語言包
Tesseract是一個開源的OCR(Optical Character Recognition,光學字元識別)引擎,可以識別多種格式的影象檔案並將其轉換成文字,目前已支援60多種語言(包括中文)。 Tesseract最初由HP公司開發,後來由Google維護,目前釋出在Googel Project上。地址為http://code.google.com/p/tesseract-ocr/。
使用預設的語言庫識別
1.安裝Tesseract
從http://code.google.com/p/tesseract-ocr/downloads/list3. 開啟命令列,定位到Tesseract-OCR目錄,輸入命令:
[plain] view plaincopyprint?- tesseract.exe number.jpg result -l eng
tesseract.exe number.jpg result -l eng
其中result表示輸出結果檔案txt名稱,eng表示用以識別的語言檔案為英文。
3. 開啟Tesseract-OCR目錄下的result.txt檔案,看到識別的結果為7542315857,有3個字元識別錯誤,識別率還不是很高,那有沒有什麼方法來提供識別率呢?
其實Tesseract提供了一套訓練樣本的方法,用以生成自己所需的識別語言庫。下面介紹一下具體訓練樣本的方法。
訓練樣本
2. 獲取樣本影象。用畫圖工具繪製了5張0-9的文樣本影象(當然樣本越多越好),如下圖所示:
3.合併樣本影象。執行jTessBoxEditor工具,在點選選單欄中Tools--->Merge TIFF。在彈出的對話方塊中選擇樣本影象(按Shift選擇多張),合併成num.font.exp0.tif檔案。4.生成Box File檔案。開啟命令列,執行命令:
[plain] view plaincopyprint?- tesseract.exe num.font.exp0.tif num.font.exp0 batch.nochop makebox
tesseract.exe num.font.exp0.tif num.font.exp0 batch.nochop makebox
生成的BOX檔案為num.font.exp0.box,BOX檔案為Tessercat識別出的文字和其座標。
注:Make Box File的命令格式為:
[plain] view plaincopyprint?- tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
其中lang為語言名稱,fontname為字型名稱,num為序號,可以隨便定義。
5.文字校正。執行jTessBoxEditor工具,開啟num.font.exp0.tif檔案(必須將上一步生成的.box和.tif樣本檔案放在同一目錄),如下圖所示。可以看出有些字元識別的不正確,可以通過該工具手動對每張圖片中識別錯誤的字元進行校正。校正完成後儲存即可。
6.定義字型特徵檔案。Tesseract-OCR3.01以上的版本在訓練之前需要建立一個名稱為font_properties.txt的字型特徵檔案。
font_properties不含有BOM頭,檔案內容格式如下:
[plain] view plaincopyprint?- <fontname> <italic> <bold> <fixed> <serif> <fraktur>
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
其中fontname為字型名稱,必須與[lang].[fontname].exp[num].box中的名稱保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值為1或0,表示字型是否具有這些屬性。
這裡在樣本圖片所在目錄下建立一個名稱為font_properties的檔案,用記事本開啟,輸入以下下內容:
[plain] view plaincopyprint?- font 0 0 0 0 0
font 0 0 0 0 0
這裡全取值為0,表示字型不是粗體、斜體等等。
7.生成語言檔案。在樣本圖片所在目錄下建立一個批處理檔案,輸入如下內容。
[plain] view plaincopyprint?- rem 執行改批處理前先要目錄下建立font_properties檔案
- echo Run Tesseract for Training..
- tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train
- echo Compute the Character Set..
- unicharset_extractor.exe num.font.exp0.box
- mftraining -F font_properties.txt -U unicharset -O num.unicharset num.font.exp0.tr
- echo Clustering..
- cntraining.exe num.font.exp0.tr
- echo Rename Files..
- rename normproto num.normproto
- rename inttemp num.inttemp
- rename pffmtable num.pffmtable
- rename shapetable num.shapetable
- echo Create Tessdata..
- combine_tessdata.exe num.
rem 執行改批處理前先要目錄下建立font_properties檔案
echo Run Tesseract for Training..
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train
echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr
echo Clustering..
cntraining.exe num.font.exp0.tr
echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable
echo Create Tessdata..
combine_tessdata.exe num.
將批處理通過命令列執行。執行後的結果如下:
需確認列印結果中的Offset 1、3、4、5、13這些項不是-1。這樣,一個新的語言檔案就生成了。
num.traineddata便是最終生成的語言檔案,將生成的num.traineddata拷貝到Tesseract-OCR-->tessdata目錄下。可以用它來進行字元識別了。
使用訓練後的語言庫識別
用訓練後的語言庫識別number.jpg檔案, 開啟命令列,定位到Tesseract-OCR目錄,輸入命令:
[plain] view plaincopyprint?- tesseract.exe number.jpg result -l eng
tesseract.exe number.jpg result -l eng
識別結果如如圖所示,可以看到識別率提高了不少。通過自定義訓練樣本,可以進行圖形驗證碼、車牌號碼識別等。感興趣的朋友可以研究研究。
三、結合C++使用
1. 直接呼叫圖片
#include "strngs.h"
#include "baseapi.h"
#pragma comment(lib,"libtesseract302d.lib")
////////////////
tesseract::TessBaseAPI api;
api.Init(NULL, "eng", tesseract::OEM_DEFAULT); //初始化,設定語言包,中文簡體:chi_sim;英文:eng;也可以自己訓練語言包
//api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" );
STRING text_out;
if (!api.ProcessPages("kaze.tif", NULL, 0, &text_out))
{
//AfxMessageBox("tesseract 處理出現異常");
return 0;
}
cout<<text_out.string();
cout<<UTF8ToGBK(text_out.string()).c_str();
2. 直接呼叫文字
// tess.cpp:
// Recognize text on an image using Tesseract API and print it to the screen
// Usage: ./tess image.png
#include <tesseract/baseapi.h>
#include <tesseract/strngs.h>
#include <iostream>
int main(int argc, char** argv)
{
if (argc != 2)
{
std::cout << "Please specify the input image!" << std::endl;
return -1;
}
const char* lang = "eng";
const char* filename = argv[1];
//新建tess基類
tesseract::TessBaseAPI tess;
//初始化
tess.Init(NULL, lang, tesseract::OEM_DEFAULT);
//設定識別模式
tess.SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
FILE* fin = fopen(filename, "rb");
if (fin == NULL)
{
std::cout << "Cannot open " << filename << std::endl;
return -1;
}
fclose(fin);
STRING text;
//進行識別
if (!tess.ProcessPages(filename, NULL, 0, &text))
{
std::cout << "Error during processing." << std::endl;
return -1;
}
else
std::cout << text.string() << std::endl;
return 0;
}
2. 結合OpencCV使用
// tesscv.cpp:
// Using Tesseract API with OpenCV
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <tesseract/baseapi.h>
#include <iostream>
int main(int argc, char** argv)
{
// Usage: tesscv image.png
if (argc != 2)
{
std::cout << "Please specify the input image!" << std::endl;
return -1;
}
// Load image
cv::Mat im = cv::imread(argv[1]);
if (im.empty())
{
std::cout << "Cannot open source image!" << std::endl;
return -1;
}
cv::Mat gray;
cv::cvtColor(im, gray, CV_BGR2GRAY);
// ...other image pre-processing here...
// Pass it to Tesseract API
tesseract::TessBaseAPI tess;
tess.Init(NULL, "eng", tesseract::OEM_DEFAULT);
tess.SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
tess.SetImage((uchar*)gray.data, gray.cols, gray.rows, 1, gray.cols);
// Get the text
char* out = tess.GetUTF8Text();
std::cout << out << std::endl;
return 0;
}
相關推薦
google Tesseract-ocr配置及訓練
一、配置 1、 從http://code.google.com/p/tesseract-ocr/downloads/list下載tesseract-ocr-3.02-vs2008、tesseract-ocr-3.02.eng.tar、tesseract-ocr-3.02.
tesseract-ocr使用以及訓練方法
本人最近在做字元識別,所以自行在網上尋找方法,接觸到tesseract,自己按照網上方法做的時候,也遇到一些問題,解決了一些。所以我決定寫下我第一個部落格,一是方便自己以後檢視,更新學習。二是方便和網友交流學習。 Tesseract介紹 Tesserac
Google開源OCR專案Tesseract訓練(自己訓練的記錄,未成功)
影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注! 影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注! 影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋
Tika結合Tesseract-OCR 實現光學漢字識別(簡體、宋體的識別率百分之百)—附Java原始碼實現及真實測試資料和訓練集下載地址
OCR(Optical character recognition) —— 光學文字識別,是影象處理的一個重要分支,中文的識別具有一定挑戰性,特別是手寫體和草書的識別,是重要和熱門的科學研究方向。可惜國內的科研院所,基本沒有大量的高識別率的訓練集&mdash
Tesseract-OCR 訓練教程(一)
MF 根據 echo 實際應用 temp sse 自己 文件 替換 實際應用中[font]替換為你自己的字體名,比如newfont、hehe等 1.根據tif生成box文件(位置寬高等信息)tesseract [font].font.exp0.tif [font].font
使用 tesseract-ocr生成訓練庫全部指令
rain pen 修改 sha works 文件 conf har charset coding:utf-8 import copyfrom PIL import Image,ImageEnhance im = Image.open(‘d:/workspace/captch
Win10 環境安裝tesseract-ocr 4.00並配置環境變量
安裝目錄 per exp x86 make dig sha 中文字體 ESS 一、安裝: 選擇對應版本,https://digi.bib.uni-mannheim.de/tesseract/ 1:下載安裝包 根據https://github.com/tesseract-oc
tesseract-ocr訓練
參考文件: http://my.oschina.net/lixinspace/blog/60124 http://blog.csdn.net/shuzui1985/article/details/8188993 https://code.google.com/p/tesseract-oc
Tesseract-ocr 安裝配置
參考:https://jingyan.baidu.com/article/219f4bf788addfde442d38fe.html 1、下載圖形識別工具Tesseract-ocr,下載路徑https://github.com/UB-Mannheim/tesseract/wiki,選擇相應的版本進行安裝。
Tesseract-OCR識別中文與訓練字型檔例項
關於中文的識別,效果比較好而且開源的應該就是Tesseract-OCR了,所以自己親身試用一下,分享到部落格讓有同樣興趣的人少走彎路。 文中所用到的身份證圖片資源是百度找的,如有侵權可聯絡我刪除。 一、準備工作 1、下載Tesseract-OCR引擎,注意要3.0以
Tesseract-OCR 在烏班圖下訓練教程
一、Tesseract訓練 1.下載Tesseract-OCR(相關版本自行選擇) 這個就不多說了,可以百度一下。 2.下載jTessBoxEditor(執行環境為java虛擬機器) 下載百度下載,有很多。開啟資料夾,目錄如下。 把檔案下載到
Tesseract-OCR 字元識別---樣本訓練
Tesseract是一個開源的OCR(Optical Character Recognition,光學字元識別)引擎,可以識別多種格式的影象檔案並將其轉換成文字,目前已支援60多種語言(包括中文)。 Tesseract最初由HP公司開發,後來由Goo
ubuntu下使用Tesseract-ocr(編譯、安裝、使用、訓練新的語言庫)
這是關於如何使用Tesseract3訓練新的語言的文件,該文件是tesseract-ocr官方wiki上翻譯過來的。 1.介紹 Tesseract3.0x是支援訓練的。這篇文章描述如何訓練的過程,提供適用於各種語言的一些指導方針,以及訓練會得到的結果。對於Tesseract2.0x的訓練參考:Traini
OCR學習及tesseract的一些測試
最近接觸OCR,先收集一些資料,包括成熟軟體、SDK、流行演算法。 1. 一個對現有OCR軟體及SDK的總結,比較全面,包括支援平臺、程式語言、支援字型語言、輸出格式、相關連結等 以此為索引,比較、選擇你想要的OCR SDK。 2. 另外一個OCR SDK 網站連結,
py-faster-rcnn演算法caffe配置,訓練及應用到自己的資料集
進入py-faster-rcnn/caffe-fast-rcnn cp Makefile.config.example MAkefile.config 然後配置Makefile.config檔案,可參考我的Makefile.config ## Refer to http://caffe.berkele
Tesseract-OCR的簡單使用與訓練
轉自 Tesseract,一款由HP實驗室開發由Google維護的開源OCR(Optical Character Recognition , 光學字元識別)引擎,與Microsoft Office Document Imaging(MODI)相比,我們可以不斷的訓練的庫,使影象轉換文字的能力
識別圖片tesseract-ocr的配置
1.下載 tesseract-ocr-setup-4.00.00dev.exe 百度網盤:(https://pan.baidu.com/s/1GnVjl7DsAJrWh2JfpwKbcA) 安裝步驟不難,也不需要改什麼東西,按著他的步驟來就ok。 2.安裝完事之後需要配置環境變數(PATH
Tesseract-OCR 字元識別---樣本訓練 圖片識別訓練
Tesseract是一個開源的OCR(Optical Character Recognition,光學字元識別)引擎,可以識別多種格式的影象檔案並將其轉換成文字,目前已支援60多種語言(包括中文)。 Tesseract最初由HP公司開發,後來由Google維護,目前釋出在Googel Pr
pva-faster-rcnn配置安裝及訓練自己的資料集
繼fasterrcnn後,又一個pva-fasterrcnn的配置教程,希望可以幫助大家。 注意:有些複製的終端命令如果不能在終端執行,請注意英文全形半形問題,可以將命令輸入終端,無須複製貼上命令 第一部分:下載並編譯pvanet1、終端輸入:git clone --re
Tesseract-OCR 簡單的中文數字混合訓練
提示,我當前Tesseract-OCR 版本是 4.0 ,jTessBoxEditorFX是2.0.1 1.下載Tesseract-OCR 連結 2.下載jTessBoxEditorFX 連結,如果中文一定要選擇FX版本(基於Java,需安裝JDK) 3.Tessera