開源OCR識別庫-Tesseract介紹


最近在github上面看到一個開源的ocr文字識別庫,感覺效果還可以,所以在這里介紹一下,這個項目的原地址在:https://github.com/tesseract-ocr/tesseract。

tesseract庫支持你訓練自己的文字識別模型,當然其本身已經提供了幾十種不同語言模型,你也可以直接下載使用,最新的4.0版本使用了LSTM神經網絡框架,

在識別中文方面效果還是不錯的。tesseract有兩種使用方式,一種是安裝完成以后,通過命令行向tesseract應用傳入要解析的圖片,翻譯完成后輸出一個txt文件;

第二種方式是自己寫程序調用api函數。

下面介紹一下tesseract庫的使用方法。

如果你用的是ubuntu18.0.4那么安裝很簡單:

在終端輸入指令安裝即可:

sudo apt-get install tesseract-ocr

sudo apt-get install libtesseract-dev

如果你跟我一樣是使用ubuntu16.0.4,那么需要按照我下面的方法來安裝,因為16.0.4采用上面的辦法安裝的是3.0的版本,3.0解析的效果不是很好。

如果你是在windows平台或其他平台可以參考:https://github.com/tesseract-ocr/tesseract/wiki/Compiling。

(1)安裝依賴庫

sudo apt-get install g++

sudo apt-get install autoconf automake libtool

sudo apt-get install pkg-config

sudo apt-get install libpng-dev

sudo apt-get install libjpeg8-dev

sudo apt-get install libtiff5-dev

sudo apt-get install zlib1g-dev

sudo apt-get install libicu-dev

sudo apt-get install libpango1.0-dev

sudo apt-get install libcairo2-dev

sudo apt-get install git

(2)安裝leptonica 1.74

cd ~/Download

git clone https://github.com/DanBloomberg/leptonica

cd leptonica

./configure

make

make install

(3)安裝tesseract

cd ~/Download

git clone https://github.com/tesseract-ocr/tesseract

cd tesseract

./autogen.sh

./configre --prefix=/usr/local

make

make install

(4)下載語言包

tesseract提供了三種模型,testdata:普通模型,testdata_fast:快速識別模型,testdata_best:最佳識別模型,

在:https://github.com/tesseract-ocr/tessdata_best目錄下下載:eng.traineddata、chi_sim.traineddata、chi_sim_vert.traineddata三個文件,

然后將這三個文件復制到/usr/local/share/testdata目錄下,如果你想識別其他語言也是下載語言識別模型然后放到testdata目錄下即可。

(5)設置語言模型路徑

vim ~/.bashrc

在末尾添加:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

export TESSDATA_PREFIX=/usr/local/share/tessdata/

然后關閉終端,重新打開終端生效。

(6)測試識別庫

在終端輸入

tesseract --version看版本是否如下:

輸入:

tesseract --list-langs查看語言模型是否正確:

可以看到自動識別了英語和簡體中文模型了。

然后隨便找張有中文字符的圖片進行識別測試:

tesseract 1.jpg out -l chi_sim

參數說明:1.jpg:要解析的文件

       out:解析輸出的文件名

       -l chi_sim:采用的語言模型,這里選擇了簡體中文。

我識別的原文:

 

識別到的文字如下:

 

(7)用C++調用api進行識別測試。

代碼:

#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
#include <iostream>
#include <memory>
using namespace std;
int main()
{
	tesseract::TessBaseAPI api;
	cout<<"version:"<<api.Version()<<endl;
	if(api.Init(NULL,"chi_sim")==0)
		cout<<"Init Ok"<<endl;
	else
	{
		cout<<"Init error"<<endl;
		return -1;
	}
	api.SetPageSegMode(tesseract::PageSegMode::PSM_AUTO);
	api.SetVariable("save_best_choices","T");
	auto pixs = pixRead("./1.jpg");
	if(!pixs)
	{
		cout<<"load image error"<<endl;
		return -2;
	}
	api.SetImage(pixs);
	api.Recognize(0);
	cout<<std::unique_ptr<char[]>(api.GetUTF8Text()).get()<<endl;
	api.Clear();
	pixDestroy(&pixs);
	return 0;

}

 makefile:

CXX		  := g++
CXX_FLAGS := -Wall -Wextra -std=c++11 -ggdb

BIN		:= .
SRC		:= .
INCLUDE	:= 
LIB		:= 

LIBRARIES	:=-llept -ltesseract
EXECUTABLE	:= ocrDemo


all: $(BIN)/$(EXECUTABLE)

run: clean all
	clear
	./$(BIN)/$(EXECUTABLE)

$(BIN)/$(EXECUTABLE): $(SRC)/*.cpp
	$(CXX) $(CXX_FLAGS) -I$(INCLUDE) -L$(LIB) $^ -o $@ $(LIBRARIES)

clean:
	-rm $(BIN)/*

 測試效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM