当前位置:首页 > 代码 > 正文

tesseract源代码各个文件的(tesseract语言包)

admin 发布:2022-12-19 22:52 166


今天给各位分享tesseract源代码各个文件的的知识,其中也会对tesseract语言包进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

android怎么调用tesseract实现OCR功能?

android调用tesseract实现OCR功能的方法为:

一、下载编译

1、首先下载tess-two

git clone git://github.com/rmtheis/tess-two tess

2、进入 tess目录,里面有三个项目,只需要进入tess-two就可以直接编译了

cd tess/tess-two

ndk-build

3、编译好后,将src下的两个包以及libs导入到自己的项目就可以用

二、使用

tesseract 使用了 leptonica的图像处理库,对于图像处理还是比较强大的

Android官方地址:tesseract-android-tools

但它必须要一个匹配库,即tessdata,我们可以从官方拷贝,在前面git的项目里面tesseract源码目录有现成的tessdata可以用,对于中文,google code上也有下载,当然也可以自己训练不同语言的tessdata。

包leptonica的类我们不必使用,只要使用tess包的类就行了

TessBaseAPI

使用时,首先创建TessBaseAPI对象

代码为:

TessBaseAPI baseApi=new TessBaseAPI();

//初始化tess

//android下面,tessdata肯定得放到sd卡里了

//如果tessdata这个目录放在sd卡的根目录

//那么path直接传入sd卡的目录

//eng就是英文,关于语言,按ISO 639-3标准的代码就行,具体请移步wiki

baseApi.init("tessdata文件夹的父级目录", "eng");

//options是为了缩放图片,这个酌情缩放,图片小的话可以不缩放

BitmapFactory.Options options=new BitmapFactory.Options();

//缩小为原来的1/2

options.inSampleSize=2;

//bitmap,我这里是以流的形式,只要能形成Bitmap就行

Bitmap bitmap = BitmapFactory.decodeStream(instream,null,options);

instream.close();

//如果图片有Alpha值,那么最好设置一下

/*ExifInterface exif = new ExifInterface(filename)

int exifOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

int rotate = 0;

switch (exifOrientation) {

case ExifInterface.ORIENTATION_ROTATE_90:

rotate = 90;

break;

case ExifInterface.ORIENTATION_ROTATE_180:

rotate = 180;

break;

case ExifInterface.ORIENTATION_ROTATE_270:

rotate = 270;

break;

}

if (rotate != 0) {

// Getting width height of the given image.

int w = bitmap.getWidth();

int h = bitmap.getHeight();

// Setting pre rotate

Matrix mtx = new Matrix();

mtx.preRotate(rotate);

// Rotating Bitmap

bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false);

// tesseract req. ARGB_8888

bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

} */

//设置要ocr的图片bitmap

baseApi.setImage(bitmap);

//根据Init的语言,获得ocr后的字符串

String text= baseApi.getUTF8Text();

//释放bitmap

baseApi.clear();

//如果连续ocr多张图片,这个end可以不调用,但每次ocr之后,必须调用clear来对bitmap进行释放

//释放native内存

baseApi.end();

///////////////////////////其它方法//////////////////////////////////

//获取字符边框

Pixa pixa= baseApi.getCharacters();

//同上,这个是整段文字的边框

baseApi.getRegions();

//同上,只不过这里是条线

baseApi.getTextlines();

//剩下的自己测试吧。

//转为rect数组 ,之后,可以很方便的在图片上框出方框

//怎么框由你

ArrayListRect rects=pixa.getBoxRects();

如何用Tesseract做日文OCR

首先做一下背景介绍,Tesseract是一个开源的OCR组件,主要针对的是打印体的文字识别,对手写的文字识别能力较差,支持多国语言(中文、英文、日文、韩文等)。是开源世界里最强的一款OCR组件。当然和世界最强的OCR工具Abbyy相比还是有一点差距,尤其在图片质量较差时,差距还是明显的。

网上有很多关于如何使用这个组件的介绍,不过都是针对英文识别的。而如果是对中文或日文等方块字进行识别,除了需要使用不同的语言包外,还要对Tesseract做一些特别的设置,否则识别率会很低,以下我就和大家分享一下我使用Tesseract对日文做OCR的一些经验。

第一步,是要下载Tesseract组件,最简单的方法就是使用VisualStudio的NUGet来下载。选择第一个组件。

第二步,下载日文语言包,由于在大陆地区无法访问google,所以不能打开官网直接下载语言包。我给出文件的地址,可以使用迅雷下载。

下载完成后将语言包文件解压后放到tessdata文件夹下。

到目前为止,准备工作已经就绪,可以开始编写代码。

第三步,初始化Tesseract组件,代码如下。

TesseractEngine engine = new TesseractEngine(@"tessdata文件夹路径", "jpn", EngineMode.Default))

第四步,设置OCR参数,关于各参数的解释,可以参照官网

Useful parameters for Japanese and Chinese

Some Japanese tesseract user found these parameters helpful for increasing tesseract-ocr (3.02) accuracy for Japanese :

Name Suggested value Description

chop_enable T Chop enable.

use_new_state_cost F Use new state cost heuristics for segmentation state evaluation

segment_segcost_rating F Incorporate segmentation cost in word rating?

enable_new_segsearch 0 Enable new segmentation search path. It could solve the problem of dividing one character to two characters

language_model_ngram_on 0 Turn on/off the use of character ngram model.

textord_force_make_prop_words F Force proportional word segmentation on all rows.

edges_max_children_per_outline 40 Max number of children inside a character outline. Increase this value if some of KANJI characters are not recognized (rejected).

以下是代码 

engine.SetVariable("chop_enable ", "F");

engine.SetVariable("enable_new_segsearch", 0);

engine.SetVariable("use_new_state_cost ", "F");

engine.SetVariable("segment_segcost_rating", "F");

engine.SetVariable("language_model_ngram_on", 0);

engine.SetVariable("textord_force_make_prop_words", "F");

engine.SetVariable("edges_max_children_per_outline", 50);

这里面chop_enable参数与官网推荐的不太一样,我发现按照官网的设置,会有很多文字识别不出来。

第五步,开始识别。

var page = engine.Process(p);

var testText = page.GetText();

var c=page.GetMeanConfidence();

第一行代码返回一个Page对象,通过该对象可以获得识别的文本,而且还可以获得识别文本所在位置(这个在识别非固定模式文档时非常有用,可以根据关键字动态查找识别字段位置)。

在例子中OCR做全文识别,但是做全文识别很多情况下识别质量一般,最好增加识别区域参数,同时将PageSegMode参数设置为PageSegMode.SingleBlock(代表多行大小相同的文字)或PageSegMode.SingleRow(代表单行大小相同的文字)。

第二行和第三行分别返回识别的文本与识别的信任度。在实际使用时我发现识别信任度不是特别有用。无论识别对错,信任度基本在0.7左右,有些时候信任度较高,识别结果反而是错误的。

经过以上几步,就可以完成日文的OCR。但要让以上代码成功运行,还必须要在安装VC++运行时2012,否则会报错。

我使用以上方法对扫描图片进行测试,发现识别精确度还是比较高的,尤其在指定区域与PageSegMode参数后。但是日文字库也存在一些低级失误,如将数字“1”识别成了汉字“一”等。如果要想解决这个问题,必须要从头训练日文,这个工作量非常大!而这真的是Tesseract一个非常不智能的地方,应该支持在原有训练字库的基础上追加训练内容!或者在官网上提供Box文件和训练用Tif供开发者下载。

如何在windows上编译Tesseract OCR

获取Tesseract源码的方式有很多。可以直接从repo获取,也可以下载压缩包。不过编译的时候往往也会出现各种奇怪的问题。这里介绍如何简单的配置和编译源码。

编译Tesseract

下载

Windows installer of tesseract-ocr 3.02.02

安装

安装过程中勾选Tesseract development files:

编译

在安装目录中找到vs2008到工程目录:

找到所有编译相关的库:

打开Visual Studio 2008(没有的可以去官网下载express版本),导入工程编译。最后生成DEBUG和RELEASE两个版本的DLL:libtesseract302d.dll ,libtesseract302.dll

在README中注意这段话:

Dependencies and Licenses

=========================

Leptonica is required. (). Tesseract no longer compiles

without Leptonica.

Libtiff is no longer required as a direct dependency.

Tesseract依赖Leptonica库,所以再看下Leptonica是怎么编译的。

编译Leptonica

Leptonica是C语言编写的一个图像处理库,支持JPEG, PNG, TIFF,GIF。

下载

源码:leptonica-1.68.tar.gz

VS工程:vs2008-1.68.zip

相关头文件和库:leptonica-1.68-win32-lib-include-dirs.zip

编译

把三个包解压,并按照下面的结构组建编译环境:

BuildFolder\

include\

leptonica-1.68\

lib\

BuildFolder\leptonica-1.68 contents:

config\ Not used for Windows builds

prog\ Regression tests, examples, utilities

src\ Source files for liblept

vs2008\ Visual Studio 2008 specific files

DLL Debug\ liblept DLL Debug build output

DLL Release\ liblept DLL Release build output

LIB Debug\ liblept LIB Debug build output

LIB Release\ liblept LIB Release build output

prog_projects\ Projects for prog programs

ioformats_reg\ Sample project for prog\ioformats_reg.exe

DLL Debug\ DLL Debug build output for sample project

DLL Release\ DLL Release build output for sample project

LIB Debug\ LIB Debug build output for sample project

LIB Release\ LIB Release build output for sample project

ioformats_reg.vcproj The ioformats_reg project file

leptonica.sln The Leptonica solution file

leptonica.vcproj The Leptonica project file

打开Visual Studio 2008,导入工程编译。最后生成DEBUG和RELEASE两个版本的DLL:liblept168d.dll,liblept168.dll。

tesseract-ocr源文件怎么用

如果你是终端用户请下载exe安装包,

这个是源码包是针对开次开发或DIY用户使用的

如果你想自己编程调用请直接看api目录的api.cpp文件即可

这个文件是调用入口,里面有详细的注释,只不过是英文的

tesseract源代码各个文件的的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于tesseract语言包、tesseract源代码各个文件的的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/28648.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载