1. 程式人生 > >OCR識別引擎tesseract使用方法

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

基於TesseractOCR識別小程式

一、背景 先說下開發背景,今年有次搬家找房子(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。 開車進地下車庫時,“滴”的一聲,完成車牌錄入;開車離開時,掃描二維碼,輸入車牌,完成停車收費。小編不禁感嘆科技改變生活,人工智能給生活帶來的便利。 車牌自動識別越來越多的被