google开源OCR项目之tesseract-ocr - 记录技术点点之路 - ITeye技术网站
google 的图片搜索就是拿这个做的啊
javaEEdevelop
浏览: 267935 次
来自: 广州
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
public ParameterRequestWrapper( ...
拒绝访问是因为.htc文件必须和网页同域名,写绝对路径不一定行 ...
millton0518 写道我照你这样的配置,失败了呀??出现 ...
我照你这样的配置,失败了呀??tesseract-ocr.rar android-ocr - 下载频道
- CSDN.NET
&&&&tesseract-ocr.rar android-ocr
tesseract-ocr.rar android-ocr
当前识别的图片路径为/mnt/sdcard/test5.jpg。 当前语言包的存放路径为/mnt/sdcard/tesseract/tessdata/。引擎为第三版本,可识别第三版本的语言包,支持中文识别。语言包需自行下载,中文包(chi_sim.traineddata.gz),英文包(eng.traineddata.gz)
若举报审核通过,可奖励20下载分
被举报人:
wuzhiqun27
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行知名的开源OCR引擎Tesseract 3.0版本日前发布,可以在项目网站下载:, 新版本支持中文,中文语言包定义。
Tesseract是于年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供命令行工具。
执行识别图像的命令格式为:
tesseract &imagename&   &outputbase& [-l lang] [configfile [[+|-]varfile]...]
其中tesseract是命令;&imagename&是待识别的图片,例如图片 eurotext.tif;&outputbasename&是输出文本文件的名称,默认生成的是你所给定的输出文件名称,加上.txt扩展名;[-l lang]可选的,指定识别图像中的语言。
Tesseract还有相应的.net版本,下载地址如下:。另外发现这个用法非常简单,注意还需要下载语言包,另外为了提高验证率,还可以自己进行训练,tesseract-OCR还支持训练功能,以提高(对不同字体的)识别效率或者对新语种的支持。大致就是通过给定的包含已知字符的tiff文件生成相应的box文件,经过手工更正后,训练tesseract-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的相关项目:
to convert, compose, and edit images from Windows .NET.
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图层。如果没有此参数,后果同上。
紧跟着就是待转换的图片的文件名,最后是转换后的图片的文件名。
阅读(...) 评论()10217人阅读
& & 本文将介绍android平台上如何使用tesseract实现OCR。 tesseract出生于HP实验室,如今由Google负责维护,是最好的开源OCR Engine之一,并且支持中文。tesseract个人觉得有两个需要考虑的点,一是大,二是慢,特别是中文。如果系统对空间和时间要求非常高,那么tesseract可能不是最好的选择。
& & 1. &准备工具tesseract-two
& tesseract是用c++实现的,需要封装Java API用于Android平台的调用。这里我们使用的是tesseract-two, 网址是。tesseract-two
是Tesseract Tools for Android的一个git分支,选择它是由于操作简单,并且集成了leptonica,一个图形处理工具。出发之前请先安装git和android-ndk。接着便是下载和编译,我是在windows上编译的。
& & & &git下载(Git
Bash操作): &git clone /rmtheis/tess-two.git tess&
& & & &ndk编译(cmd命令行):
&先cd到刚才Git下载的tess目录。敲如下命令(编译的时间会有点久):
cd tess-two
android update project -t 1 --path .
ant release
cd eyes-two
android update project -t 1 --path .
ant release
& & 2. 调用tesseract识别图片
& && &eclipse里面导入编译好的android project,共三个项目,tess-two,
tess-two-test 以及eyes-two。其中tess-two和eyes-two为android
lib项目,供其它项目引用。tess-two封装Tesseract的Android
API,eyes-two封装leptonica的Android
API。tess-two-test为OCR的测试,先读一下TessBaseAPITest.java的代码,了解API的使用方法。
private static final String TESSBASE_PATH = &/mnt/sdcard/tesseract/&;
private static final String DEFAULT_LANGUAGE = &eng&;
private static final String CHINESE_LANGUAGE = &chi_sim&;
TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(TESSBASE_PATH, CHINESE_LANGUAGE);
baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_AUTO);
baseApi.setImage(params[0]);
// Ensure that the result is correct.
final String outputText = baseApi.getUTF8Text();
baseApi.end();
基本的API调用步骤非常之简单。不过模拟器启动之后,还需要把Tesseract的trained data放到模拟器里面,下载地址为。
/mnt/sdcard/
mkdir tesseract
cd tesseract
mkdir tessdata
Ctrl+C退出Shell
adb push chi_sim.traineddata /mnt/sdcard/tesseract/tessdata
push eng.traineddata /mnt/sdcard/tesseract/tessdata
尝试自己写个Activity,显示张图片并识别一下吧。
3. &写在最后
& & OCR的识别率取决于两个方面,图片质量和OCR engine的能力。通常为了提高识别率,需要对图片作预处理。比如常见的二值化(黑白),放大,切割,锐化等。可以直接调用leptonica接口实现。至于Tesseract
Engine,只能说是非常好的英文OCR engine,处理中文还是有待提高。选择好一个OCR engine之后,能做的估计也就是在图片的预处理上下功夫了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:189377次
积分:2801
积分:2801
排名:第6390名
原创:57篇
评论:97条
阅读:31387
(4)(2)(2)(1)(4)(1)(2)(2)(2)(3)(7)(1)(12)(3)(2)(1)(1)(1)(11)如何通过Tesseract开源OCR引擎创建Android OCR应用_百度知道
如何通过Tesseract开源OCR引擎创建Android OCR应用
提问者采纳
要编译Android平台的Tesseract,需要使用Google提供的tesseract-android-tools。 代码获取方式: git clone https://code.。/p/tesseract-android-tools/ 打开README,在命令行工具中执行下面的步骤: cd &project-directory& curl -O https://tesseract-ocr。googlecode.。com/files/tesseract-ocr-3.02.02.tar.gz curl -O http://leptonica。googlecode。com/files/leptonica-1.69.tar.gz tar -zxvf tesseract-ocr-3.02.02.tar.gz tar -zxvf leptonica-1.69.tar.gz rm -f tesseract-ocr-3.02.02.tar.gz rm -f leptonica-1.69.tar.gz mv tesseract-3.02.02 jni/com_googlecode_tesseract_android/src mv leptonica-1.69 jni/com_googlecode_leptonica_android/src ndk-build -j8 android update project --target 1 --path . ant debug (release) 注意:如果你在使用NDK r9,编译的时候会出现错误: format not a string literal and no format arguments [-Werror=format-security] 解决的方法就是在Application.mk中加入一行: APP_CFLAGS += -Wno-error=format-security 编译之后会生成class.jar和一些*.so。 Android OCR Application 创建一个Android应用,把生成的jar和so导入进来。 创建TessOCR: public class TessOCR { private TessBaseAPI mT public TessOCR() { // TODO Auto-generated constructor stub mTess = new TessBaseAPI(); String datapath = Environment.getExternalStorageDirectory() + &/tesseract/&; String language = &eng&; File dir = new File(datapath + &tessdata/&); if (!dir.exists()) dir.mkdirs(); mTess.init(datapath, language); } public String getOCRResult(Bitmap bitmap) { mTess.setImage(bitmap); String result = mTess.getUTF8Text(); } public void onDestroy() { if (mTess != null) mTess.end(); } } 构造函数中需要在存储卡上创建一个目录tessdata,如果不创建程序运行就会出错。因为源码中会检测这个目录,不存在就抛出异常: public boolean init(String datapath, String language) { if (datapath == null) { throw new IllegalArgumentException(&Data path must not be null!&); } if (!datapath.endsWith(File.separator)) { datapath += File. } File tessdata = new File(datapath + &tessdata&); if (!tessdata.exists() || !tessdata.isDirectory()) { throw new IllegalArgumentException(&Data path must contain subfolder tessdata!&); } return nativeInit(datapath, language); } 就这么简单。现在通过三种方式获取图片做OCR: 在图库中选取一张图,选择发送或者分享,选择OCR应用 在AndroidManifest.xml中加入IntentFilter,让OCR应用出现在图库的分享列表中: &intent-filter& &action android:name=&android.intent.action.SEND& /& &category android:name=&android.intent.category.DEFAULT& /& &data android:mimeType=&text/plain& /& &data android:mimeType=&image/*& /& &/intent-filter& 获得URI之后,对URI解码,获取bitmap: if (Intent.ACTION_SEND.equals(intent.getAction())) { Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); uriOCR(uri); } private void uriOCR(Uri uri) { if (uri != null) { InputStream is = try { is = getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(is); mImage.setImageBitmap(bitmap); doOCR(bitmap); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (is != null) { try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } 启动OCR应用,从图库中选择一张图做OCR 发送Intent调用图库,在onActivityResult中获取返回的URI做OCR: Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, REQUEST_PICK_PHOTO); 启动OCR应用,拍照之后做OCR 为了获取高质量的图片,在Intent中加入图片路径。返回之后就可以直接使用这个图片路径解码: private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // Ensure that there's a camera activity to handle the intent if (takePictureIntent.resolveActivity(getPackageManager()) != null) { // Create the File where the photo should go File photoFile = try { photoFile = createImageFile(); } catch (IOException ex) { // Error occurred while creating the File } // Continue only if the File was successfully created if (photoFile != null) { takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); } } } 最后不要忘记下载语言包,并push到存储卡的tessdata目录下。
来自团队:
其他类似问题
为您推荐:
android的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁