OCR識別引擎tesseract使用方法
最近一直跟OCR打交道,學習了下google的OCR引擎TESSERACT,是個很好的識別工具。tesseract-3.0已支援版面分析,功能很強大。安裝tesseract前可選擇性地安裝leptonica和libtiff。不過建議先安裝這兩個庫。不安裝tiff的話只能處理bmp檔案。
這裡只是說明怎麼識別中文。依次安裝好libtiff,leptonica和tesseract後,下載簡體中文和繁體中文的訓練資料,在tesseract的下載頁可以找到。放到某個目錄的tessdata資料夾下。然後設定環境變數TESSDATA_PREFIX=tessdata的目錄。然後,新建一個ocr.cpp檔案,編寫如下程式碼:
#include <mfcpch.h>
#include <ctype.h>
#include <sys/time.h>
#include "applybox.h"
#include "control.h"
#include "tessvars.h"
#include "tessedit.h"
#include "baseapi.h"
#include "thresholder.h"
#include "pageres.h"
#include "imgs.h"
#include "varabled.h"
#include "tprintf.h"
#include "stderr.h"
#include "notdll.h"
#include "mainblk.h"
#include "output.h"
#include "globals.h"
#include "helpers.h"
#include "blread.h"
#include "tfacep.h"
#include "callnet.h"
#include "allheaders.h"
int main(int argc,char **argv){
if(argc!=3){
printf("usage:%s <bmp file> <txt file>/n",argv[0]);
return -1;
}
char *image_file=argv[1];
char *txt_file=argv[2];
STRING text_out;
struct timeval beg,end;
tesseract::TessBaseAPI api;
IMAGE image;
api.Init(argv[0], "chi_sim", NULL, 0, false);//初始化api物件
api.SetPageSegMode(tesseract::PSM_AUTO);//設定自動進行版面分析
api.SetAccuracyVSpeed(tesseract::AVS_FASTEST);//要求速度最快
if (image.read_header(image_file) < 0) {//讀取bmp檔案的元資訊
printf("Read of file %s failed./n", image_file);
exit(1);
}
if (image.read(image.get_ysize ()) < 0){//讀取bmp檔案
printf("Read of image %s error/n", image_file);
exit(1);
}
invert_image(&image);//反轉影象的每個畫素,即使1變0,0變1
int bytes_per_line = check_legal_image_size(image.get_xsize(),
image.get_ysize(),
image.get_bpp());//計算每一行畫素所佔位元組數
api.SetImage(image.get_buffer(), image.get_xsize(), image.get_ysize(),
image.get_bpp() / 8, bytes_per_line);//設定影象
gettimeofday(&beg,NULL);
char* text = api.GetUTF8Text();//識別影象中的文字
gettimeofday(&end,NULL);
printf("%s:reconize sec=%f/n",argv[0],end.tv_sec-beg.tv_sec+(double)(end.tv_usec-beg.tv_usec)/1000000.0);//列印識別的時間
text_out += text;
delete [] text;
FILE* fout = fopen(txt_file, "w");
fwrite(text_out.string(), 1, text_out.length(), fout);//將識別結果寫入輸出檔案
fclose(fout);
}
再編寫一個makefile檔案如下:
all:ocr
CFLAGS=-Wall -g
LDFLAGS= -lz -lm -ltesseract_textord /
-ltesseract_wordrec -ltesseract_classify -ltesseract_dict -ltesseract_ccstruct/
-ltesseract_ccstruct -ltesseract_cutil -ltesseract_viewer -ltesseract_ccutil/
-ltesseract_api -ltesseract_image -ltesseract_main -llept
LD_LIBRARY_PATH =
INCLUDES= -I/usr/local/include/tesseract/ -I/usr/local/include/leptonica/
%.o:%.cpp
g++ -c $(CFLAGS) $(INCLUDES) $(SOURCE) -o [email protected] $<
ocr:ocr.o
g++ -o [email protected] $^ -g $(LD_LIBRARY_PATH) $(LDFLAGS)
clean:
rm ocr.o
在該目錄下執行make編譯成可執行檔案ocr,執行./ocr 1.bmp 1.txt就可以將影象1.bmp識別結果寫到1.txt了,程式會列印識別的時間。值得注意的是,tesseract中文識別速度很慢,執行幾分鐘很正常。不知有哪位大蝦知道怎麼調優?
更鬱悶的是tesseract不支援多執行緒,不能在同一程序中執行多個例項。。
相關推薦
OCR識別引擎tesseract使用方法
最近一直跟OCR打交道,學習了下google的OCR引擎TESSERACT,是個很好的識別工具。tesseract-3.0已支援版面分析,功能很強大。安裝tesseract前可選擇性地安裝leptonica和libtiff。不過建議先安裝這兩個庫。不安裝tiff的話只能處理bmp檔案。 這
Python調用Tesseract-OCR完成圖片OCR識別
3.0 for 安裝 ima pla 2.7 str spa 文件 [硬件環境] Win10 64位 [軟件環境] Python版本:2.7.3 Python庫: 1.1) Pillow 1.2) Pytesseract 其他: 1.1) Tesseract-OCR的可執行
圖片文字識別:Tesseract OCR庫在Python中基本使用
圖片識別:Tesseract OCR庫在Python中基本使用 一.Tesseract - Xmind的筆記 二. 程式碼案例: 基本使用程式碼 import pytesseract from
C#用Tesseract進行OCR識別,可識別中英日韓所有語言
原始碼下載:https://download.csdn.net/download/horseroll/10739546 原始碼下包含部分語言包,所以檔案比較大 先上效果圖。測試中文英文日語識別,其他語言也都行,只要下載相應的語言包,操作使用後面都有講 1
tesseract-ocr使用以及訓練方法
本人最近在做字元識別,所以自行在網上尋找方法,接觸到tesseract,自己按照網上方法做的時候,也遇到一些問題,解決了一些。所以我決定寫下我第一個部落格,一是方便自己以後檢視,更新學習。二是方便和網友交流學習。 Tesseract介紹 Tesserac
Tesseract-OCR識別中文與訓練字型檔例項
關於中文的識別,效果比較好而且開源的應該就是Tesseract-OCR了,所以自己親身試用一下,分享到部落格讓有同樣興趣的人少走彎路。 文中所用到的身份證圖片資源是百度找的,如有侵權可聯絡我刪除。 一、準備工作 1、下載Tesseract-OCR引擎,注意要3.0以
OCR圖片文字識別的過程方法
2018年11月02日 16:58:52 人生幾何歡喜就好 閱讀數:6 標籤: OCR 圖文識別
識別圖片tesseract-ocr的配置
1.下載 tesseract-ocr-setup-4.00.00dev.exe 百度網盤:(https://pan.baidu.com/s/1GnVjl7DsAJrWh2JfpwKbcA) 安裝步驟不難,也不需要改什麼東西,按著他的步驟來就ok。 2.安裝完事之後需要配置環境變數(PATH
【基於tesseract或ANN的神經網路的身份證號OCR識別】
之前寫了一篇,結果瀏覽器崩了,文字全無。這次直接上程式碼吧。 身份證號的識別過程: #include<iostream> #include<opencv2\opencv.hpp> using namespace std; using names
JAVA識別身份證號碼,H5識別身份證號碼,tesseract-ocr識別(二)
背景介紹 上一篇博文介紹瞭如何使用JAVA識別身份證號碼,假設在截取了身份證號碼資訊的情況下,這一篇博文主要討論一下思路吧,技術方面都是大家會的。 思路分析 H5拍照上傳 —> 服務端擷取身份證號碼 —–> 識別號碼 —–>
tesseract-ocr識別中文掃描圖片例項講解
如: 但卻很少看到在windows下的相關文章介紹。 接下來我將一步步講述如何採用tesseract-ocr識別含有中文的圖片。 1、下載tesseract-ocr(注意3.0版本之後才支援中文的識別) 2、安裝t
Tesseract OCR識別小結
1、下載piccolox-1.2.jar、piccolo-1.2.jar ,看清楚了。是 piccolox-1.2.jar、piccolo-1.2.jar中 2、 2、I Run “new ScrollView().main(new String[]{"8461"});” in IntelliJ ,and
識別瀏覽器的JavaScript引擎的方法
答案來自StackOverflow,開啟這個網頁http://jsbin.com/opuvas即可,這個網頁也是答題者自己寫的。二維碼是這個網址。網頁內有統計訪問量,作者想知道對多少人有用,建議尊重原創
centos上 java使用Tesseract進行ocr識別
#查詢相關包 test-ugc-api01 tesseract rpm -qa|grep tesseract tesseract-langpack-chi_sim-3.04.00-3.el7.noarch tesseract-3.04.00-3.el7.x86_64 #查詢包具體安裝位置 test-ugc
OCR開源庫Tesseract漢字識別訓練
先用中文做個示例: 1. 拿到一張chi.pingfang.exp0.jpg: 2. 將它轉化為tif:http://image.online-convert.com/convert-to-ti
基於Tesseract的OCR識別小程式
一、背景 先說下開發背景,今年有次搬家找房子(2020了應該叫去年了),發現每天都要對著各種租房廣告打很多電話。(當然網上也找了實地也找),每次基本都是對著牆面看電話號碼然後撥打,次數一多就感覺非常麻煩,如果沒看清還容易輸錯一個號碼。 &
mysql之innodb引擎使用方法
mysql之innodb引擎使用方法前言閑來無事做不如MySQL。一.簡介:1.Linux下使用MySQL數據庫時,為了支持事務操作需要用到InnoDB引擎,對於表中處理的插入,更新等操作失敗時,回滾前面不應該完成的操作是必須的. 2.一般MySQL默認的數據庫引擎是MyISAM,不支持事務和外鍵,則可使用支
基於Docker的OCR識別系統的誕生
ocr識別系統開發字符OCR識別系統的原因:眾所周知谷歌開源的tesseract-ocr是一套字符識別系統,其最新版本4.00采用了lstm(Long Short-Term Memory,長短時記憶網絡)神經網絡進行字符的訓練與識別,其支持100多種語言(字符),對於比較標準的印刷體字符,其識別準確率非常高(
身份證掃描識別/身份證OCR識別的正確姿勢,你get到了嗎?
視頻流 開發包 掃描識別 出錯 應用 左右 信息 設備 ucs 自從國家規定電信實名制之後,實名制已經推廣到各個領域:辦理通信業務需要實名制、銀行開戶需要實名制、移動支付需要實名制,就連註冊個自媒體賬戶都需要實名制。 而實名制的背後,就是身份證信息的采集和錄入驗證。 傳統的
移動端車牌識別/車牌OCR識別車牌信息自動錄入 車牌離線自動識別
系統 收費 智能 ppi 車輛 ucs 廠商 離線 ~~ 周末,小編約了朋友商場shopping。 開車進地下車庫時,“滴”的一聲,完成車牌錄入;開車離開時,掃描二維碼,輸入車牌,完成停車收費。小編不禁感嘆科技改變生活,人工智能給生活帶來的便利。 車牌自動識別越來越多的被