-
-
[原创]OCR图片识别技术-可离线使用
-
发表于: 2022-6-18 16:04 8293
-
项目有些过时,但也可以用,可以自己训练字库,添加到替换到项目中,项目不大
更多工具https://bbs.pediy.com/user-home-854079.htm
有喜欢研究安卓安全方面的可加V
关键代码(如遇到引入代码上的错误删除即可):
项目下载:https://wwb.lanzoub.com/iz1ow06ldidc
相关下载
https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
字库下载:
https://github.com/tesseract-ocr/tessdata_best
识别率由算法和字库决定,项目中自带字库可离线使用
设置字库文件
//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;
}
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)