最近公司让做一个扫描汽车VIN码得到汽车的信息的功能,在网上查了半天基本都是那几家公司在做广告,看到就烦,搜到的完全不是想要的结果,在经过各种查找之后,资料找的差不多了,再此记录分享下,需要的可以参考资料自己实现功能。
1.参考了其他公司做出来的的APP这个扫描范围肯定是要限制一定区域的,可以参考这个项目,单独把这个扫描的提取出来,
实验光学字符识别应用
2.把字库从assets复制到SD卡,可以参考这个,assets复制到SD卡,单独提取复制字库到SD卡,就是这个工具类,提取出来用即可。
//Android6.0之前安装时就能复制,6.0之后要先请求权限,所以6.0以上的这个方法无用需另外处理。
assets2SD(getApplicationContext(), LANGUAGE_PATH, DEFAULT_LANGUAGE_NAME);
/**
* 将assets中的识别库复制到SD卡中
*/
public class SDUtils {
private static final String TAG = "SDUtils";
/**
* 将assets中的识别库复制到SD卡中
*
* @param path 要存放在SD卡中的 完整的文件名。这里是"/storage/emulated/0//tessdata/chi_sim.traineddata"
* @param name assets中的文件名 这里是 "chi_sim.traineddata"
*/
public static void assets2SD(Context context, String path, String name) {
Log.e(TAG, "assets2SD: " + path);
Log.e(TAG, "assets2SD: " + name);
//如果存在就删掉
File f = new File(path);
if (f.exists()) {
f.delete();
}
if (!f.exists()) {
File p = new File(f.getParent());
if (!p.exists()) {
p.mkdirs();
}
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
InputStream is = null;
OutputStream os = null;
try {
is = context.getAssets().open(name);
File file = new File(path);
os = new FileOutputStream(file);
byte[] bytes = new byte[2048];
int len = 0;
while ((len = is.read(bytes)) != -1) {
os.write(bytes, 0, len);
}
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (is != null)
is.close();
if (os != null)
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3.识别功能就几句代码;
首先肯定是引入依赖了
dependencies {
compile 'com.rmtheis:tess-two:6.2.0'
}
简单的用法其实就几行代码:
TessBaseAPI tessBaseAPI = new TessBaseAPI();
tessBaseAPI.init(DATAPATH, DEFAULT_LANGUAGE);//参数后面有说明。
tessBaseAPI.setImage(bitmap);
String text = tessBaseAPI.getUTF8Text();
然后用官方的字库肯定是很大的几十兆的,而且识别不一定准确,所以就需要根据自己的功能去单独去训练字库来识别,而且字库也很小我训练出来的只有100+KB大小,比起官方的字库30+M起那是相当理想了,官方的你也用不了这么多,所以建议还是自己训练下自己的字库,准确率还高。
训练字库的参考这个;Android文字识别tesseract ocr -训练样本库 识别字库(注意里面图片转换的那个网址就不要去试了(反馈了不知道有没改掉),我就在这里掉进坑里了,还好爬了出来,转换图片推荐用其他方法或者最简单的用系统的画图,然后另存为tif即可。)
等集齐这些功能功能就差不多实现啦,我这是识别出来的字符传给后台后台处理返回结果给我的,识别出什么车型什么资料啥的那个就要看你们是怎么实现了。
————————————————
版权声明:本文为CSDN博主「Ke-Le8」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_19714505/article/details/79114821