AI通用文字识别初体验
一、功能简介
文字识别的核心技术是OCR(Optical Character Recognition,光学字符识别)。OCR是一种通过拍照、扫描等光学输入方式,把各种票据、卡证、表格、报刊、书籍等印刷品文字转化为图像信息,再利用文字识别技术将图像信息转化为计算机等设备可以使用的字符信息的技术。
HarmonyOS提供的文字识别功能在一定程度上支持文本倾斜、拍摄角度倾斜、复杂光照条件以及复杂文本背景等场景的文字识别。
二、搭建HarmonyOS环境
HarmonyOS开发环境搭建,可参照如下步骤进行:
1.安装DevEco Studio
DevEco Studio的下载链接如下:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415
2.设置DevEco Studio开发环境
DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
- 如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
- 如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
三、代码结构解析
基于AI的通用文字识别示例教程主要内容包括:图片列表展示、输入文本、分词、通用文字识别、结果展示等功能。DevEco Studio工程代码结构如下:
- provider:PictureProvider图片适配类,获取所有图片,并将图片放到图片列表中。
- slice:MainAbilitySlice本示例教程主页面。
- util:工具类
- LogUtil是日志打印类,对HiLog日志进行了封装。
- WordRecognition是通用文字识别类,对图片中的文字进行识别并保存。
- WordSegment是分词类,对输入文本进行分词。
- MainAbility:主程序入口,DevEco Studio生成,未添加逻辑,不需变更。
- MyApplication:DevEco Studio生成,不需变更。
- resources:存放工程使用到的资源文件
- resources\base\element中存放DevEco studio自动生成的配置文件string.json,不用变更。
resources\base\graphic中存放页面样式文件:
background_ability_page.xml用于设置界面背景颜色。
background_ability_main.xml用于设置界面布局样式。
button_element.xml用于设置按钮样式。 - resources\base\layout中布局文件:
ability_main.xml用于展示图片和输入文本。
item_image_layout.xml用于设置图片滑动区域图片。 - resources\base\media下存放图片资源(本教程使用了8张.jpg图片,开发者自行准备;icon.png由DevEco Studio生成不需变更)。
- resources\base\element中存放DevEco studio自动生成的配置文件string.json,不用变更。
- config.json:配置文件。
四、代码实践
1.添加并展示图片
首先在"resources\base\media"目录下添加8张jpg图片(分别命名为1-8.jpg),并加载图片id数组,代码如下:
private int[] pictureLists = new int[]{
ResourceTable.Media_1, ResourceTable.Media_2,
ResourceTable.Media_3, ResourceTable.Media_4, ResourceTable.Media_5,
ResourceTable.Media_6, ResourceTable.Media_7, ResourceTable.Media_8};
接着获取图片id数组和MainAbilitySlice对象,代码如下:
public PictureProvider(int[] pictureLists, Context context) {
this.pictureLists = pictureLists;
this.context = context;
}
定义ViewHolder类,用于列表中展示图片,代码如下:
private static class ViewHolder {
Image image;
}
最后将图片到页面,代码如下:
@Override