今天跟大家分享一个ocr文字识别的小项目:

鸿蒙系统提供了文字识别的能力,支持简体中文、英文、日文、韩文、繁体中文五种语言。实现步骤为初始化文字识别服务、将图片转换为PixelMap、文字识别、释放OCR服务

首先从相册或者拍照获取图片,这一部分在之前的文章里有介绍,有疑问的同学可以查看这篇文章

HarmonyOS NEXT开发实战教程:选择相册和拍照

获取图片之后就可以进行图片的处理和识别,相关代码如下:

// 初始化 OCR 服务
const initResult = await textRecognition.init();
if (initResult) {
let imageSource: image.ImageSource | undefined = undefined;
let chooseImage: PixelMap | undefined = undefined;
let fileSource = await fileIo.open(this.ocrRecourse, fileIo.OpenMode.READ_ONLY);
imageSource = image.createImageSource(fileSource.fd);
console.log('file.fd:',);
chooseImage = await imageSource.createPixelMap();
hilog.info(0x0000, 'OCRDemo', `chooseImage:${chooseImage.toString()}`);
if (!chooseImage) { return; }
// 调用文本识别接口
let visionInfo: textRecognition.VisionInfo = {
pixelMap: chooseImage
};
textRecognition.recognizeText(visionInfo, (error: BusinessError, data: textRecognition.TextRecognitionResult) => {
if (error.code !== 0) {
// hilog.error(0x0000, 'OCRDemo', `Failed to recognize text. Code: ${error.code}, message: ${error.message}`);
return;
}
// 识别成功,获取对应的结果
let recognitionString = data.value.toString()
console.log('ocr识别结果:',JSON.stringify(recognitionString));
this.resultStr = data.value.toString()
router.pushUrl({ url:'pages/OCResultPage', params:{ result:this.resultStr } })
if(chooseImage && imageSource) {
chooseImage.release();
imageSource.release();
} });
// 使用完毕后,释放 OCR 服务
await textRecognition.release();}
else {}

界面部分比较简单,直接贴个代码:

Navigation(){
Column(){
Image(this.ocrRecourse)
.width(this.screen_width - 80)
.height(450)
.backgroundColor('rgb(240,240,240)')
.onClick(()=>{
this.recogniZAction()
})
Row(){
Text('拍照')
.fontSize(15)
.fontColor(Color.White)
.width(70)
.height(30)
.backgroundColor('rgb(18,136,119)')
.textAlign(TextAlign.Center)
.onClick(()=>{
this.invokeCamera((url)=>{
this.ocrRecourse = url
}) }) Text('相册')
.fontSize(15)
.fontColor(Color.White)
.width(70)
.height(30)
.backgroundColor('rgb(18,136,119)')
.textAlign(TextAlign.Center)
.margin({left:40})
.onClick(()=>{
this.invokeAlbum((url)=>{
this.ocrRecourse = url
}) }) }
.width('100%')
.justifyContent(FlexAlign.Center)
.margin({top:60})
Text('识别')
.width(180)
.height(40)
.fontSize(15)
.textAlign(TextAlign.Center)
.fontColor(Color.White)
.backgroundColor('rgb(18,136,119)')
.margin({top:20})
.onClick(()=>{ this.recogniZAction() }) }
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
.width('100%') .height('100%')
.backgroundColor(Color.White)
.expandSafeArea([SafeAreaType.SYSTEM],[SafeAreaEdge.BOTTOM])}.width('100%').height('100%').titleMode(NavigationTitleMode.Mini).hideBackButton(true).backgroundColor('rgb(18,136,119)').title(this.Title())

鸿蒙NEXT开发实战教程—文字识别的更多相关文章

  1. AI应用开发实战 - 手写识别应用入门

    AI应用开发实战 - 手写识别应用入门 手写体识别的应用已经非常流行了,如输入法,图片中的文字识别等.但对于大多数开发人员来说,如何实现这样的一个应用,还是会感觉无从下手.本文从简单的MNIST训练出 ...

  2. Swift游戏开发实战教程(霸内部信息大学)

    Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...

  3. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建

    上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...

  4. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立

    上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里 ...

  5. 微信小程序-云开发实战教程

    微信小程序-云开发实战教程 云函数,云存储,云数据库,云调用 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/gettin ...

  6. Python开发实战教程(8)-向网页提交获取数据

    来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知 ...

  7. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块

    尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...

  8. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发

    进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...

  9. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作

    /****** Object: 新闻表 Script Date: 2017/9/2 星期六 15:11:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENT ...

  10. php扩展开发实战教程(1)

    我的开发环境: Ubuntu16.04 apt方式安装的php5.6, apache,mysql等 由于我的本机用的是apt方式安装的php,所以我这里从头开始用最精简的方式,编译安装一个php5.4 ...

随机推荐

  1. 『Python底层原理』--Python属性的工作原理

    Python中的属性操作(如获取.设置和删除属性)是我们日常编程中非常常见的操作. 但你有没有想过,当我们写下obj.attr或obj.attr = value时,Python 内部究竟发生了什么? ...

  2. vue - [03] Hello World~

    题记部分 (1)选择一个合适的目录,然后进入终端,执行:vue create account-manager (2)切换目录到account-manager,执行npm run serve启动开发服务 ...

  3. Spark SQL (一)

    Spark SQL Spark与Hive的比较,Hive用一句话总结是,传入一条交互式sql在海量数据中查找结果,Spark可以将其结果转化成RDD来来进一步操作. 1.0以前: Shark 1.1. ...

  4. 3. Nginx 命令行参数 & nginx.conf 配置文件的详细说明(附有截图说明)

    3. Nginx 命令行参数 & nginx.conf 配置文件的详细说明(附有截图说明) @ 目录 3. Nginx 命令行参数 & nginx.conf 配置文件的详细说明(附有截 ...

  5. C# Semaphore

    1.Semaphore定义Semaphore,是负责协调各个线程, 以保证它们能够正确.合理的使用公共资源.也是操作系统中用于控制进程同步互斥的量. Semaphore常用的方法有两个WaitOne( ...

  6. AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗

    最近在研究AI Agent如何调用三方API,整理了一篇文章,分享给大家. 调用三方 API(Function Calling)不是通过提示词(Prompt)来实现的,而是通过函数调用机制(Funct ...

  7. DBeaver 连接 mysql 报错:Public Key Retrieval is not allowed

    前言 DBeaver 连接 mysql 报错:Public Key Retrieval is not allowed 遇到 "Public Key Retrieval is not allo ...

  8. 工作面试必备:SQL 中的各种连接 JOIN 的区别总结!

    前言 尽管大多数开发者在日常工作中经常用到Join操作,如Inner Join.Left Join.Right Join等,但在面对特定查询需求时,选择哪种Join类型以及如何使用On和Where子句 ...

  9. 编写你的第一个 Django 应用程序,第2部分

    接着上次第1部分开始,现在我们将设置数据库,创建您的第一个模型,并快速获得 介绍 Django 自动生成的管理站点. 一.数据库设置 现在,打开.这是一个普通的 Python 模块,具有 表示 Dja ...

  10. 文件批量重命名神器:Bulk Rename Utility

    内容摘要: 你还在手动给文件重命名吗?介绍一款免费而强大的批量重命名神器:Bulk Rename Utility,它将满足你对批量改名的所有期待.让它将你从痛苦的重命名工作中解放吧! 软件获取地址 云 ...