-
-
[原创]OCR图片识别技术-可离线使用
-
发表于: 2022-6-18 16:04 8517
-
项目有些过时,但也可以用,可以自己训练字库,添加到替换到项目中,项目不大
更多工具https://bbs.pediy.com/user-home-854079.htm
有喜欢研究安卓安全方面的可加V
关键代码(如遇到引入代码上的错误删除即可):
项目下载:4a7K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6$3u0Q4x3X3g2D9j5h3&6*7L8%4g2T1i4K6u0W2j5$3!0E0i4K6u0r3K9i4Z5I4L8%4M7H3y4X3I4V1K9h3c8U0
字库下载:
识别率由算法和字库决定,项目中自带字库可离线使用
设置字库文件
//dataPath = getDataPath("eng.traineddata");
dataPath = getDataPath("chi_sim.traineddata");
/**
* 获得字典文件
* @param fileName
* @return
*/
private String getDataPath(String fileName){
File path = getFilesDir();
File filesDir = new File(path.getPath()+File.separatorChar+"tessdata"+File.separatorChar+fileName);
if(!filesDir.isFile()){//数据文件存在
try {
InputStream open = getAssets().open(fileName);
boolean writeFile = FileUtils.writeFile(filesDir, open);
System.out.println(writeFile);
} catch (Exception e) {
e.printStackTrace();
}
}
return path.getPath()+File.separatorChar;
}
/**
* 进行图片识别
*
* @param bitmap
* 待识别图片
* @param language
* 识别语言
* @return 识别结果字符串
*/
public String doOcr(Bitmap bitmap, String language) {
TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(dataPath, language);
// 必须加此行,tess-two要求BMP必须为此配置
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
baseApi.setImage(bitmap);
String text = baseApi.getUTF8Text();
baseApi.clear();
baseApi.end();
return text;
}