背景
市面上文字识别大多需要开通会员才能使用,所以决定自己封装一个sdk出来,供后面开发扫描类app提供便捷工具
效果
SDK API
初始化
需进行初始化才能使用sdk
EasyOcrSDK.getInstance().init(context)
异步识别图片
通过EasyOcrExecuteCallback回调获取识别结果
EasyOcrSDK.getInstance().collect(bitmap)
同步识别图片
需要在子线程中调用,接口返回与onTextCollectSuccess回调一致
public class EasyOcrCollectBean {
private String text;
private Bitmap bitmap;
public EasyOcrCollectBean(String text, Bitmap bitmap){
this.text = text;
this.bitmap = bitmap;
}
public String getText() {
return text;
}
public Bitmap getBitmap() {
return bitmap;
}
}
EasyOcrSDK.getInstance().collectBySync(bitmap)
图片识别回调
outputText为简单排版的图片文字串,outputImage为添加识别标识框的原图
public interface EasyOcrExecuteCallback {
void onSdkInitResult(boolean isSuccess);
void onTextCollectSuccess(String outputText, Bitmap outputImage);
void onTextCollectFail();
}
EasyOcrSDK.getInstance().setCallback(easyOcrExecuteCallback)
sdk资源释放
不用sdk时需调用,否则可能会引起内存泄漏
EasyOcrSDK.getInstance().release()
功能解析
pdf文件识别功能主要代码,需要在子线程中执行
val parcelFileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
val pdfRenderer = PdfRenderer(parcelFileDescriptor)
for (i in 0 until pdfRenderer.pageCount){
val page: PdfRenderer.Page = pdfRenderer.openPage(i)
val bitmap = Bitmap.createBitmap(page.width, page.height, Bitmap.Config.ARGB_8888)
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT)
page.close()
val bean = EasyOcrSDK.getInstance().collectBySync(bitmap)
textList.add(bean.text)
bitmapList.add(bean.bitmap)
}
sdk下载
⭐sdk接入有任何问题,欢迎向我提出