logo
积分中心
【码上尝鲜】给应用增加 OCR 功能,终于不用手动抄资料了 原创
头像 码农小马 2026-10-22 10:36:05    发布
5637 浏览 13 点赞 0 收藏

平时开发工具类应用时,我经常遇到一个看似简单、实现起来却挺有价值的需求:用户拍一张纸质资料的照片,应用就能把上面的文字提取出来。

以前我会考虑让用户手动输入,或者通过其他方式处理图片。但在学习 HarmonyOS 7 的 AI 开放能力后,我发现可以利用 Core Vision Kit 提供的通用文字识别能力,把图片中的文字提取流程整合进自己的应用。

我想做一个简单的 OCR 小工具,先不追求复杂的文档理解,只解决“拍照之后,怎样快速拿到文字”这个问题。


先把识别结果变成应用可以使用的数据

OCR 返回的内容不一定就是一段可以直接保存的纯文本。对于不同场景,我们可能还需要考虑文字顺序、换行、空格,以及用户是否需要修改识别结果。

我会先设计一个统一的数据模型,让后续页面和业务逻辑不依赖某个具体识别服务的返回格式。

interface OcrResult {
  text: string;
  confidence: number;
}
 
function normalizeOcrText(
  result: OcrResult
): string {
  return result.text
    .replace(/\r\n/g, '\n')
    .trim();
}
 
function isValidOcrResult(
  result: OcrResult
): boolean {
  return result.text.trim().length > 0;
}

这里的 OcrResult 是应用内部定义的结构,并不代表 Core Vision Kit 的原生返回类型。实际接入时,需要根据对应版本的官方 API,将识别结果转换成这个业务模型。


识别完成后,不要急着保存

我觉得 OCR 工具真正影响体验的地方,不只是识别率,还有识别完成后的处理方式。

例如,一张包含标题、段落和页码的资料照片,即使识别出了所有文字,也可能出现段落顺序错误。用户如果直接复制结果,最后得到的内容可能很难阅读。

因此,我会在结果页提供文本编辑框,让用户先检查,再决定复制、保存或者分享。

@Entry
@Component
struct OcrResultPage {
  @State extractedText: string = '';
 
  build() {
    Column({ space: 12 }) {
      Text('识别结果')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
 
      TextArea({
        text: this.extractedText,
        placeholder: '识别完成后,文字会显示在这里'
      })
        .height(260)
        .onChange((value: string) => {
          this.extractedText = value;
        })
 
      Button('清空文本')
        .onClick(() => {
          this.extractedText = '';
        })
    }
    .padding(20)
    .width('100%')
  }
}

这段代码是 ArkUI 结果编辑页的示例,不包含实际 OCR 调用。正式开发时,需要将图片选择、识别任务和结果回填连接起来,并按目标 SDK 校验组件属性和能力接口。


我会重点测试这三种图片

第一种是光线充足、文字清晰的打印资料,用来验证基本流程。

第二种是倾斜拍摄的书页,检查识别结果是否存在明显漏字、错字和顺序问题。

第三种是带有复杂背景的照片,例如桌面上的纸张或者屏幕截图,看看实际结果是否仍然方便用户使用。

还要处理图片为空、识别失败、用户取消操作等异常情况。

如果应用涉及身份证件、合同或者内部资料,还需要考虑图片访问权限、识别结果缓存和数据清理,不能因为使用 OCR 就默认允许任意读取图片。

对我来说,OCR 最有价值的地方,是把图片里的文字变成后续业务可以使用的数据。只要再结合搜索、笔记和资料管理功能,一个简单的文字识别工具就能逐步成长为真正的效率应用。

©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除

京ICP备:2022009079号-2

京公网安备:11010502051901号

ICP证:京B2-20230255