先容
本示例展示了使用hiai引擎框架提供的通用文字识别能力。
本示例模仿了在应用里,选择一张图片,识别其文字信息并展示出来(可复制)。
必要使用hiai引擎框架通用文字识别接口@kit.CoreVisionKit.d.ts。
效果预览
使用阐明:
- 在手机的主屏幕,点击”ocrDemo“,启动应用。
- 点击“选择图片”按钮,在图库中选择图片,大概通过相机照相。
- 点击“开始识别”按钮,识别图本信息,文本展示并可复制。
详细实现
本示例展示的控件在@kit.CoreVisionKit.d.ts定义了文字识别API:
- recognizeText(visionInfo: VisionInfo, callback: AsyncCallback): void
复制代码 业务使用时,必要先辈行import导入textRecognition。 调用通用文字识别接口,并传入想要识别的图片,接收处理惩罚返回的结果(文字信息)。参考:
- import { textRecognition } from '@kit.CoreVisionKit'
- import { image } from '@kit.ImageKit';
- import { hilog } from '@kit.PerformanceAnalysisKit';
- import { BusinessError } from '@kit.BasicServicesKit';
- import { picker, fileIo } from '@kit.CoreFileKit';
- @Entry
- @Component
- struct Index {
- private imageSource: image.ImageSource | undefined = undefined;
- @State chooseImage: PixelMap | undefined = undefined;
- @State dataValues: string = '';
- build() {
- Column() {
- Image(this.chooseImage)
- .objectFit(ImageFit.Fill)
- .height('60%')
- Text(this.dataValues)
- .copyOption(CopyOptions.LocalDevice)
- .height('15%')
- .margin(10)
- .width('60%')
- Button('选择图片')
- .type(ButtonType.Capsule)
- .fontColor(Color.White)
- .alignSelf(ItemAlign.Center)
- .width('80%')
- .margin(10)
- .onClick(() => {
- // 拉起图库,获取图片资源
- this.selectImage();
- })
- Button('开始识别')
- .type(ButtonType.Capsule)
- .fontColor(Color.White)
- .alignSelf(ItemAlign.Center)
- .width('80%')
- .margin(10)
- .onClick(async () => {
- this.textRecognitionTest();
- })
- }
- .width('100%')
- .height('100%')
- .justifyContent(FlexAlign.Center)
- }
- private async textRecognitionTest() {
- if (!this.chooseImage) {
- return;
- }
- // 调用文本识别接口
- let visionInfo: textRecognition.VisionInfo = {
- pixelMap: this.chooseImage
- };
- let textConfiguration: textRecognition.TextRecognitionConfiguration = {
- isDirectionDetectionSupported: false
- };
- textRecognition.recognizeText(visionInfo, textConfiguration, (error: BusinessError, data: textRecognition.TextRecognitionResult) => {
- // 识别成功,获取对应的结果
- if (error.code == 0) {
- let recognitionString = data.toString();
- hilog.info(0x0000, 'OCRDemo', `Succeeded in recognizing text:${recognitionString}`);
- // 将结果更新到Text中显示
- this.dataValues = data.value;
- }
- if(this.chooseImage && this.imageSource) {
- this.chooseImage.release();
- this.imageSource.release();
- }
- });
- }
- private async selectImage() {
- let uri = await this.openPhoto();
- if (uri === undefined) {
- hilog.error(0x0000, 'OCRDemo', "Failed to get uri.");
- return;
- }
- this.loadImage(uri);
- }
- private openPhoto(): Promise<string> {
- return new Promise<string>((resolve, reject) => {
- let photoPicker = new picker.PhotoViewPicker();
- photoPicker.select({
- MIMEType: picker.PhotoViewMIMETypes.IMAGE_TYPE,
- maxSelectNumber: 1
- }).then((res: picker.PhotoSelectResult) => {
- resolve(res.photoUris[0]);
- }).catch((err: BusinessError) => {
- hilog.error(0x0000, 'OCRDemo', `Failed to get photo image uri. code:${err.code},message:${err.message}`);
- resolve('');
- })
- })
- }
- private loadImage(name: string) {
- setTimeout(async () => {
- let fileSource = await fileIo.open(name, fileIo.OpenMode.READ_ONLY);
- this.imageSource = image.createImageSource(fileSource.fd);
- this.chooseImage = await this.imageSource.createPixelMap();
- }, 100)
- }
- }
复制代码 以上就是本篇文章所带来的鸿蒙开发中一小部门技术讲解;想要学习完整的鸿蒙全栈技术。可以在末端找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下:
内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!
鸿蒙【北向应用开发+南向体系层开发】文档
鸿蒙【底子+实战项目】视频
鸿蒙面经
为了制止大家在学习过程中产生更多的时间本钱,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |