Android笔记(二十):写一个图片文字识别SDK给自己用

背景

市面上文字识别大多需要开通会员才能使用,所以决定自己封装一个sdk出来,供后面开发扫描类app提供便捷工具

效果

图片识别结果
拍照识别结果
pdf文件某一页识别结果
pdf文件某一页识别结果

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接入有任何问题,欢迎向我提出

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌面小侠Plus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值