当前位置:首页 » 操作系统 » tesseractocr源码

tesseractocr源码

发布时间: 2022-07-02 03:25:52

⑴ 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.(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数组 ,之后,可以很方便的在图片上框出方框
//怎么框由你
ArrayList<Rect> rects=pixa.getBoxRects();

⑵ 如何在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. (www.leptonica.com). 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。
编译
把三个包解压,并按照下面的结构组建编译环境:
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开源OCR引擎创建Android OCR应用

1要编译Android平台的Tesseract,需要使用Google提供的tesseract-android-tools。

代码获取方式:

⑸ tesseract-ocr参数都有哪些

如果你是终端用户请下载exe安装包,这个是源码包是针对开次开发或DIY用户使用的如果你想自己编程调用请直接看api目录的api.cpp文件即可这个文件是调用入口,里面有详细的注释,只不过是英文的

⑹ 如何通过Tesseract开源OCR引擎创建Android OCR应用

Tesseract是遵守Apache License 2.0协议的开源OCR引擎。

如何在Android平台编译Tesseract,以及如何快速创建一个简单的OCR应用。

Tesseract Android Tools

要编译Android平台的Tesseract,需要使用Google提供的tesseract-android-tools。

代码获取方式:


打开README,在命令行工具中执行下面的步骤:

  1. cd<project-directory>

  2. curl-O

  3. curl-O

  4. tar-zxvftesseract-ocr-3.02.02.tar.gz

  5. tar-zxvfleptonica-1.69.tar.gz

  6. rm-ftesseract-ocr-3.02.02.tar.gz

  7. rm-fleptonica-1.69.tar.gz

  8. mvtesseract-3.02.02jni/com_googlecode_tesseract_android/src

  9. mvleptonica-1.69jni/com_googlecode_leptonica_android/src

  10. ndk-build-j8

  11. androipdateproject--target1--path.

  12. antdebug(release)

注意:如果在使用NDK r9,编译的时候会出现错误:

[-Werror=format-security]

解决的方法就是在Application.mk中加入一行:

APP_CFLAGS+=-Wno-error=format-security

编译之后会生成class.jar和一些*.so。

Android OCR Application

创建一个Android应用,把生成的jar和so导入进来。

创建TessOCR:

  1. publicclassTessOCR{

  2. privateTessBaseAPImTess;

  3. publicTessOCR(){

  4. //TODOAuto-generatedconstructorstub

  5. mTess=newTessBaseAPI();

  6. Stringdatapath=Environment.getExternalStorageDirectory()+"/tesseract/";

  7. Stringlanguage="eng";

  8. Filedir=newFile(datapath+"tessdata/");

  9. if(!dir.exists())

  10. dir.mkdirs();

  11. mTess.init(datapath,language);

  12. }

  13. publicStringgetOCRResult(Bitmapbitmap){

  14. mTess.setImage(bitmap);

  15. Stringresult=mTess.getUTF8Text();

  16. returnresult;

  17. }

  18. publicvoidonDestroy(){

  19. if(mTess!=null)

  20. mTess.end();

  21. }

  22. }

构造函数中需要在存储卡上创建一个目录tessdata,如果不创建程序运行就会出错。因为源码中会检测这个目录,不存在就抛出异常:

  1. publicbooleaninit(Stringdatapath,Stringlanguage){

  2. if(datapath==null){

  3. ("Datapathmustnotbenull!");

  4. }

  5. if(!datapath.endsWith(File.separator)){

  6. datapath+=File.separator;

  7. }

  8. Filetessdata=newFile(datapath+"tessdata");

  9. if(!tessdata.exists()||!tessdata.isDirectory()){

  10. ("!");

  11. }

  12. returnnativeInit(datapath,language);

  13. }

就这么简单。现在通过三种方式获取图片做OCR:

在图库中选取一张图,选择发送或者分享,选择OCR应用

在AndroidManifest.xml中加入IntentFilter,让OCR应用出现在图库的分享列表中:

  1. <intent-filter>

  2. <actionandroid:name="android.intent.action.SEND"/>

  3. <categoryandroid:name="android.intent.category.DEFAULT"/>

  4. <dataandroid:mimeType="text/plain"/>

  5. <dataandroid:mimeType="image/*"/>

  6. </intent-filter>

获得URI之后,对URI解码,获取bitmap:

  1. if(Intent.ACTION_SEND.equals(intent.getAction())){

  2. Uriuri=(Uri)intent.getParcelableExtra(Intent.EXTRA_STREAM);

  3. uriOCR(uri);

  4. }

  5. privatevoiriOCR(Uriuri){

  6. if(uri!=null){

  7. InputStreamis=null;

  8. try{

  9. is=getContentResolver().openInputStream(uri);

  10. Bitmapbitmap=BitmapFactory.decodeStream(is);

  11. mImage.setImageBitmap(bitmap);

  12. doOCR(bitmap);

  13. }catch(FileNotFoundExceptione){

  14. //TODOAuto-generatedcatchblock

  15. e.printStackTrace();

  16. }finally{

  17. if(is!=null){

  18. try{

  19. is.close();

  20. }catch(IOExceptione){

  21. //TODOAuto-generatedcatchblock

  22. e.printStackTrace();

  23. }

  24. }

  25. }

  26. }

  27. }

启动OCR应用,从图库中选择一张图做OCR

发送Intent调用图库,在onActivityResult中获取返回的URI做OCR:

  1. Intentintent=newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

  2. startActivityForResult(intent,REQUEST_PICK_PHOTO);

启动OCR应用,拍照之后做OCR

为了获取高质量的图片,在Intent中加入图片路径。返回之后就可以直接使用这个图片路径解码:

  1. (){

  2. IntenttakePictureIntent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);

  3. //Ensurethatthere'

  4. if(takePictureIntent.resolveActivity(getPackageManager())!=null){

  5. //

  6. FilephotoFile=null;

  7. try{

  8. photoFile=createImageFile();

  9. }catch(IOExceptionex){

  10. //

  11. }

  12. //

  13. if(photoFile!=null){

  14. takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,

  15. Uri.fromFile(photoFile));

  16. startActivityForResult(takePictureIntent,REQUEST_TAKE_PHOTO);

  17. }

  18. }

  19. }

不要忘记下载语言包,并push到存储卡的tessdata目录下。

⑺ 如何在windows上编译Tesseract OCR

so是linux系统的动态链接库,你需要把源码拿到Windows里面用vc 或MinGW等编译工具 重新编译一下。windows的动态链接库是dll文件。

⑻ 如何在windows上编译Tesseract OCR

安装

安装过程中勾选Tesseract development files:

编译

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

找到所有编译相关的库:

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

在README中注意这段话:

?
1
2
3
4
5
6
Dependencies and Licenses
=========================

Leptonica is required. (www.leptonica.com). 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

编译

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

?
1
2
3
4
5
6
7
BuildFolder\

include\

leptonica-1.68\

lib\
BuildFolder\leptonica-1.68 contents:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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开源吗

Tesseract是图盲,默认情况下只能看得懂未压缩的TIFF图像,如果直接用tesseract处理其它格式的图片,会报错如下:_to_image_type:Error:Unrecognizedimagetype:code.jpgIMAGE::read_header:Error:Can’treadthisimagetype:code.jpgtesseract:Error:Readoffilefailed:code.jpg所以需要用ImageMagick来转换图片格式,ImageMagick(TM)是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。ImageMagick的大多数功能的使用都来源于命令行工具。通常来说,它可以支持以下程序语言:Perl,C,C++,Python,PHP,Ruby,Java;现成的ImageMagick接口(PerlMagick,Magick++,PythonMagick,MagickWandforPHP,RubyMagick,andJMagick)是可利用的。这使得自动的动态的修改创建图片变为可能。ImageMagick支持至少90种图片格式:A,ART,AVI,AVS,B,BIE,BMP,BMP2,BMP3,C,CACHE,CAPTION,CIN,CIP,CLIP,CLIPBOARD,CMYK,CMYKA,CUR,CUT,DCM,DCX,DNG,DOT,DPS,DPX,EMF,EPDF,EPI,EPS,EPS2,EPS3,EPSF,EPSI,EPT,EPT2,EPT3,FAX,FITS,FPX,FRACTAL,G,G3,GIF,GIF87,GRADIENT,GRAY,HDF,HISTOGRAM,HTM,HTML,ICB,ICO,ICON,JBG,JBIG,JNG,JP2,JPC,JPEG,JPG,JPX,K,LABEL,M,M2V,MAP,MAT,MATTE,MIFF,MNG,MONO,MPC,MPEG,MPG,MSL,MTV,MVG,NULL,O,OTB,P7,PAL,PALM,PATTERN,PBM,PCD,PCDS,PCL,PCT,PCX,PDB,PDF,PFA,PFB,PGM,PGX,PICON,PICT,PIX,PJPEG,PLASMA,PNG,PNG24,PNG32,PNG8,PNM,PPM,PREVIEW,PS,PS2,PS3,PSD,PTIF,PWP,R,RAS,RGB,RGBA,RGBO,RLA,RLE,SCR,SCT,SFW,SGI,SHTML,STEGANO,SUN,SVG,SVGZ,TEXT,TGA,TIF,TIFF,TILE,TIM,TTC,TTF,TXT,UIL,UYVY,VDA,VICAR,VID,VIFF,VST,WBMP,WMF,WMFWIN32,WMZ,WPG,X,XBM,XC,XCF,XPM,XV,XWD,Y,YCbCr,YCbCrA,YUV,ImageMagick.NET的相关项目:UseMagickNettoconvert,compose,andeditimagesfromWindows.NET.ImageMagickAppisa.NETapplicationwritteninC#ormatstodifferentformats.假设需要识别的图片验证码为code.jpg,需要做的只有两步:d:\ImageMagick\convert.exe-compressnone-depth8-alphaoff./code.gif./code.tifD:\\tesseract\\tesseract.exe./code.tif./result结果就在文本文件./result.txt里面了,tesseract会自动地在./result后面添加上后缀名.txt。然后再对两个命令做点解释。convert.exe:ImageMagick套件的一部分,负责图片格式转换,各个参数的意义如下:-compressnone:转换后的图片不要压缩,如果没有加这一项,后续tesseract处理的时候会报错:read_tif_image:Error:Illegalimageformat:Compression-depth8:设置转换后图像的色深为8位,也就是bpp为8。如果没有此参数,后果如下:_legal_image_size:Error:Only1,2,4,5,6,8bpparesupported:16Segmentationfault-alphaoff:在转换后的图像中不要添加alpha图层。如果没有此参数,后果同上。紧跟着就是待转换的图片的文件名,最后是转换后的图片的文件名。

热点内容
hadoop在win10上编译 发布:2024-11-17 07:47:35 浏览:291
c安全编程 发布:2024-11-17 07:44:05 浏览:816
算法上中位 发布:2024-11-17 07:39:05 浏览:977
空调压缩机哪种好 发布:2024-11-17 07:36:50 浏览:754
我的世界最好看的服务器手机 发布:2024-11-17 07:36:47 浏览:860
数据库百科 发布:2024-11-17 07:35:08 浏览:692
安卓如何申请鸿蒙系统 发布:2024-11-17 07:20:02 浏览:728
java火焰纹章 发布:2024-11-17 07:19:05 浏览:772
中行的个人密码是什么 发布:2024-11-17 07:18:32 浏览:277
分佣源码 发布:2024-11-17 07:06:16 浏览:526