十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
VIN码OCR识别技术,也叫VIN码扫描识别技术,是基于手机(Android、iOS)操作系统开发的数据快速采集技术,通过手机摄像头扫一扫就可以快速采集VIN码信息。
10年积累的成都网站制作、成都网站建设、外贸营销网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有开江免费网站建设让你可以放心的选择与我们合作。
要编译Android平台的Tesseract,需要使用Google提供的tesseract-android-tools。
代码获取方式:
git clone ht code google com/p/tesseract-android-tools/
打开README,在命令行工具中执行下面的步骤:
cd project-directory
android应用中ocr的解决方案大致有两种,而采用最多的还是tesseract.
有两种解决方案,一种是采用tesseract cloud-service,这钟是把图片信息发送到云端,然后获得图片分析数据;
第二种就是不用联网,本地化分析图片上信息。
android手机调用OCR识别图像中的文字的方法为:
一、下载编译tesseract
1、首先下载tess-two。
2、进入 tess目录,里面有三个项目,我们只需要进入tess-two就可以直接编译了。
3、编译好后,将src下的两个包以及libs导入到自己的项目就可以用。
二、使用
1、使用时,首先创建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值,那么最好设置一下
//设置要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 rects=pixa.getBoxRects();
2、开始识别。
推荐汉王。
汉王OCR智能财务数据管理系统,内设“财务+识别”解决方案,通过曾获得国家科学技术进步二等奖的OCR识别技术,能自动采集各类票据上的信息,并完成分析,结构化输出入库。
飞机票、火车票、出租车票、增值税发票、普通发票、身份证、社保卡、工牌、营业执照、医疗单据等,均可识别。
票据中常有手写内容,通过曾获得国家科学技术进步一等奖的手写识别技术,汉王软件能轻松应对,远远领先其他竞争对手。
不仅如此,汉王OCR智能财务数据管理系统还不受设备限制,IOS、Android手机,PC端高拍仪等均可用于采集。发票自动寻边检测,抬手就能自动拍照,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();