在项目过程中,由于调用接口识别比较费时间,后来采用了飞桨开源模型来做本地的OCR识别,它的SDK使用完全免费,无有效期限制。
我们这里使用的是OCRV3的包,只是在扫描过程中使用了下OCR的识别
按demo导入包文件
调用方法:
private void uploadOcr(Bitmap bitmap, Handler handler) {
try {
mInferConfig = new InferConfig(activity.getAssets(), "infer");
mInferConfig.setThread(Util.getInferCores());
mOcrManager = new InferManager(activity, mInferConfig, "XXXX-XXXX-XXXX-XXXX");
StringBuffer stringBuffer = new StringBuffer();
List<com.baidu.ai.edge.core.ocr.OcrResultModel> modelList;
modelList = mOcrManager.ocr(bitmap, 0.1f);
List<BasePolygonResultModel> results = new ArrayList<>();
for (int i = 0; i < modelList.size(); i++) {
com.baidu.ai.edge.core.ocr.OcrResultModel mOcrResultModel = modelList.get(i);
OcrViewResultModel mOcrViewResultModel = new OcrViewResultModel();
mOcrViewResultModel.setColorId(mOcrResultModel.getLabelIndex());
mOcrViewResultModel.setIndex(i + 1);
mOcrViewResultModel.setConfidence(mOcrResultModel.getConfidence());
mOcrViewResultModel.setName(mOcrResultModel.getLabel());
mOcrViewResultModel.setBounds(mOcrResultModel.getPoints());
mOcrViewResultModel.setTextOverlay(true);
results.add(mOcrViewResultModel);
}
mOcrManager.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
这里返回的结果是按一个个矩形识别的,所以最后结果需要自己按矩形的x,y值来判断计算拼接下