今天跟大家分享一个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. .Net Core WebAPI部署多服务器配置Nginx负载均衡

    下载Nginx包: https://nginx.org/en/download.html 首先下载Nginx包 注意:下载路径必须为英文,不能到中文: 启动Nginx: 打开刚刚下载的Nginx包,然 ...

  2. [luogu1248] 加工生产调度 题解

    考虑 \(i\) 排在 \(j\) 前的条件是 \(a_i+\max(a_j,b_i)+b_j\le a_j+\max(a_i,b_j)+b_i\),然后发现这一坨东西是皇后游戏中的倒数第三个式子,直 ...

  3. c# 对序列化类XMLSerializer 二次封装泛型化方便了一些使用的步骤

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/17270107.html 加工的泛型类如下: using System; using Syste ...

  4. 【攻防世界】wife_wife

    wife_wife 题目来源 攻防世界 NO.GFSJ1192 题解 本题没有源码,也没有提示,非常困难,在网上搜索此题可以看到源码.由于使用了assign(),因此存在Javascript原型链污染 ...

  5. Scala样例类及底层实现伴生对象

    package com.wyh.day01 /** * 样例类的使用 * 1.使用case修饰类 * 2.不需要写构造方法,getter,setter方法,toString方法 * 3.直接通过对象名 ...

  6. form-create-designer中怎么扩展自定义组件

    form-create-designer中怎么扩展自定义组件 form-create-designer 是基于 @form-create/element-ui实现的表单设计器组件.可以通过拖拽的方式快 ...

  7. 使用PySide6/PyQt6实现Python跨平台通用列表页面的基类设计

    我在随笔<使用PySide6/PyQt6实现Python跨平台GUI框架的开发>中介绍过PySide6/PyQt6 框架架构的整体设计,本篇随笔继续深入探讨框架的设计开发工作,主要针对通用 ...

  8. echarts柱形图给X轴坐标类目添加点击事件

    在项目中遇到这么个需求要在柱形图上的x轴添加点击事件,当点击对应x轴文字的时候要弹出模态框展示子图表 根据echarts的Api给图表实例绑定点击事件 myChartInstance?.on('cli ...

  9. linux mongodb安装

    更新依赖包 安装前我们需要安装各个 Linux 平台依赖包. Red Hat/CentOS: sudo yum install libcurl openssl Ubuntu 18.04 LTS (&q ...

  10. 堆排序(内置模块 heapq )(NB)

    博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import heapq # q->queue 优先队列 import r ...