导航:首页 > 源码编译 > androidocr识别源码

androidocr识别源码

发布时间:2022-02-28 01:42:16

1. 帮忙从pudn上下载基于tesseract实现-android OCR

http://download3.pudn.com/downloads302/sourcecode/multimedia/streaming/56541300RobotReader.rar
附件有些大,直接点击下载吧,不要用迅雷

2. 简要说说Android系统ocr实现的原理

二维码 是成熟的技术可以调用库

如果是其他自动识别中文,英文的有字库 , 但是需要自己去匹配了

先识别一个一个的图像像素 然后把像素形成的字体 换到库进行比对识别 然后输出!

OCR 技术 现在一般都是有针对的开发,因为字体太多了,识别率很差!

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

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

代码获取方式:

4. TessBaseAPI在安卓上实现OCR文字识别时候,编译没错误,运行时会异常终止,可能是什么原因急!!

之后,它被谷歌大幅改进,很可能是识别率最高的可用开源 OCR 引擎之一了。结合 ... 接下来需要对下载下来的 tess-two 进行编译 如何用 android ndk 进行 so 的编译我放在了... 包leptonica 的类我们不必使用,只要使用 tess 包的类就行了 下面是 tessBaseAPI 的主要...

5. 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();

6. android手机 ocr识别怎么做

您好,可以使用全能扫描王一类的软件,即可。

7. android平台的摄像头取词(ocr文字识别)翻译应用

我可以给你,只有OCR。

8. android手机怎么调用OCR识别图像中的文字

下面是使用ocr文字识别软件识别图像文字的参考方法:

1、在电脑上准备一个ocr文字识别软件,并打开;

2、通过左上角把图片添加进去;

3、在上面选择文件的识别格式和识别效果;

4、点击左上角的添加文件按钮,开始进行图像文字识别;

希望上面使用ocr文字识别软件进行图像文字识别的方法,可以帮助到您!

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

Tesseract是图盲,默认情况下只能看得懂未压缩的TIFF图像,如果直接用tesseract处理其它格式的图片,会报错如下:
Tesseract Open Source OCR Engine
name_to_image_type:Error:Unrecognized image type:code.jpg
IMAGE::read_header:Error:Can’t read this image type:code.jpg
tesseract:Error:Read of file failed:code.jpg

所以需要用ImageMagick来转换图片格式,ImageMagick (TM) 是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。ImageMagick的大多数功能的使用都来源于命令行工具。通常来说,它可以支持以下程序语言: Perl, C, C++, Python, PHP, Ruby, Java;现成的ImageMagick接口(PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick)是可利用的。这使得自动的动态的修改创建图片变为可能。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的相关项目:

Use MagickNet to convert, compose, and edit images from Windows .NET.

ImageMagickApp is a .NET application written in C# that utilizes the ImageMagick command line to allow conversion of multiple image formats to different formats.

假设需要识别的图片验证码为code.jpg,我们需要做的只有两步:

d:\ImageMagick\convert.exe -compress none -depth 8 -alpha off ./code.gif ./code.tif
D:\\tesseract\\tesseract.exe ./code.tif ./result

结果就在文本文件./result.txt里面了,tesseract会自动地在./result后面添加上后缀名.txt。然后再对两个命令做点解释。

convert.exe:ImageMagick套件的一部分,负责图片格式转换,各个参数的意义如下:
-compress none:转换后的图片不要压缩,如果没有加这一项,后续tesseract处理的时候会报错:read_tif_image:Error:Illegal image format:Compression
-depth 8:设置转换后图像的色深为8位,也就是bpp为8。如果没有此参数,后果如下:
Tesseract Open Source OCR Engine
check_legal_image_size:Error:Only 1,2,4,5,6,8 bpp are supported:16
Segmentation fault
-alpha off:在转换后的图像中不要添加alpha图层。如果没有此参数,后果同上。
紧跟着就是待转换的图片的文件名,最后是转换后的图片的文件名。

10. 如何通过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目录下。

阅读全文

与androidocr识别源码相关的资料

热点内容
java7并发编程实战手册pdf 浏览:340
windows打印机编程 浏览:234
怎么用纸做解压小方块 浏览:264
8253的编程方式 浏览:140
云服务器无法连接到当前网络 浏览:467
香港服务器什么时候租用 浏览:598
福州高精密三坐标测量仪编程 浏览:709
变量的作用域编译预处理 浏览:177
程序员买台式机好还是笔记本 浏览:810
安卓叮当猫年卡怎么样 浏览:426
自学旅游英语用什么app 浏览:154
linux端口开放命令 浏览:681
单片机小汽车 浏览:953
思考与决策pdf 浏览:624
ted加密货币 浏览:721
联想服务器如何安装硬盘阵列驱动 浏览:130
c语言编译器怎么打中文 浏览:492
加密exe文件打不开怎么办 浏览:14
仕女pdf 浏览:933
安装储存服务器是什么意思 浏览:114