首页 > 其他分享 >鸿蒙NEXT开发实战教程—文字识别

鸿蒙NEXT开发实战教程—文字识别

时间:2024-12-27 15:31:34浏览次数:1  
标签:chooseImage 教程 Center 鸿蒙 NEXT height width backgroundColor 识别

今天跟大家分享一个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())

标签:chooseImage,教程,Center,鸿蒙,NEXT,height,width,backgroundColor,识别
From: https://www.cnblogs.com/youlanjihua/p/18635889

相关文章

  • 鸿蒙NEXT开发实战教程—小红书app
    幽蓝君最近发现小红书是个好东西,一定要多逛今天就浅浅模仿一下小红书app,主要是底部tab栏和主页部分。首先看一下tabbar,由于中间有一个红色按钮的存在,所以这里我使用自定义导航栏来实现,自定义的实现逻辑是在本来app的上层叠加一层自定义tabbar,使用监听index的变化来改变tababr......
  • 雷池社区版WAF的自定义错误页面和支持页面修改配色教程
    自定义错误页面且支持页面修改配色雷池自定义配色原理雷池的默认页面存在这样子的占位符{{placeholder:color}}当返回错误页面时,雷池会把这段占位符替换为一段用户自定义颜色的 CSS,然后在页面中使用配色<style>:root{--primary-color:#0067B8;/*背景色*/-......
  • Pycharm 2024.3 安装详细教程与激活方法(附常见问题解决)
    Pycharm概述Pycharm是JetBrains公司推出的一款功能强大的Python集成开发环境(IDE),凭借其丰富的功能和工具集,极大地提升了开发者的编程效率和工作体验。温馨提示:本文中的方法仅供学习交流使用,如果条件允许,请支持正版软件。删除旧版本Pycharm如果您的电脑中已经安装了旧版本的......
  • UltraEdit v29 破解激活及安装教程
    一、软件简介UltraEdit(前身为IDM)由IanD.Mead创立,UltraEdit是文本编辑软件的先驱,UltraEdit提供一整套产品,包括UltraEdit、UEStudio、UltraCompare、UltraFinder和UltraFTP。UltraEdit强调可在Windows、Mac和Linux上无缝运行的可配置性和易于使用的产品。UltraEdit......
  • Clion 2024.3完整版的安装教程(附激活,常见问题处理)
    卸载老版本Clion首先,如果小伙伴的电脑上有安装老版本的Clion,需要将其彻底卸载掉,如下所示(没有安装则不用管,直接安装即可):TIP:如果你之前使用过本站提供的 激活到2025年版本脚本,需要执行对应卸载脚本/适用2024版本/JetBrains2023最新全家桶/jetbra/scripts/uninstall-......
  • 黑客入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
       这篇文章没有什么套路。就是一套自学理论和方向,具体的需要配合网络黑白去学习。毕竟是有网络才会有黑白!有自学也有培训!1.打死也不要相信什么分分钟钟教你成为大黑阔的,各种包教包会的教程,就算打不死也不要去购买那些所谓的盗号软件之类的东西。2,我之前让你......
  • 寻志同道合之人,共同完成这本-Yocto项目实战教程:高效定制嵌入式Linux系统
    Contents第1章Yocto项目.231.1      嵌入式Linux系统.231.1.1     什么是嵌入式系统?.231.1.1.1     嵌入式系统的特点.231.1.1.2     当前流行的嵌入式系统.231.1.2     嵌入式Linux系统简介.231.1.3     嵌入式Linux系......
  • 安装CentOS(新手教程超详细)
    安装CentOS1.安装虚拟机1.1下载虚拟机软件VMware(VMwarebyBroadcom-CloudComputingfortheEnterprise)我们使用的是VMwareWorkstationVirtualBox(Downloads–OracleVirtualBox)如果使用的是Windows系统,下载带forWindowshosts的版本1.2安装虚拟机下载完V......
  • 2024网络安全学习路线,最全保姆级教程,学完直接拿捏!
    CSDN独家网络安全资料包!点这里即可获取  关键词: 网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线首先咱们聊聊,学习网络安全方向通常会有哪些问题1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人......
  • 网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程
     前言1.入行网络安全这是一条坚持的道路,三分钟的热情可以放弃往下看了。2.多练多想,不要离开了教程什么都不会了,最好看完教程自己独立完成技术方面的开发。3.有时多百度,我们往往都遇不到好心的大神,谁会无聊天天给你做解答。4.遇到实在搞不懂的,可以先放放,以后再来解......