文字识别demo?

功能场景描述及使用场景

对图片中的文字进行ocr提取,提取后进行定位。

阅读 587
1 个回答

使用的核心API

import image from '@ohos.multimedia.image';
// 在使用通用文字识别时,将实现文字识别的相关的类添加至工程。
import textRecognition from '@hms.ai.ocr.textRecognition';
import hilog from '@ohos.hilog';
import resourceManager from '@ohos.resourceManager';

核心代码解释

import image from '@ohos.multimedia.image';
// 在使用通用文字识别时,将实现文字识别的相关的类添加至工程。
import textRecognition from '@hms.ai.ocr.textRecognition';
import resourceManager from '@ohos.resourceManager';

@Entry
@Component
struct IndexOCR {
  @State text1: string = '';
  @State text2: string = '';
  @State text3: string = '';
  @State language: string[] = [];

  build() {
    Column() {
      Button() {
        Text("testOCR")
          .fontColor(Color.White)
          .fontSize(20)
      }
      .type(ButtonType.Capsule)
      .backgroundColor("#0D9FFB")
      .width("80%")
      .height(50)
      .margin(10)
      .onClick(() => {
        this.testOCR();
        console.log("******");
      })

      Text('支持的语言类别:' + this.language.toString())
      Text(this.text1)
      Text('单行文字与坐标:' + this.text2)
      Text('单个字与坐标:' + this.text3)
    }
    .width('100%')
    .height('100%').justifyContent(FlexAlign.Center)
  }

  async testOCR() {
    // 将图片转换为PixelMap, 可以通过context内的资源管理获取
    let res = $r('app.media.img_1');
    console.log(res + '');
    let resourceValue: resourceManager.Resource = {
      bundleName: res.bundleName,
      moduleName: res.moduleName,
      id: res.id
    }
    let resource = await getContext(this).resourceManager.getMediaContent(resourceValue);
    let imageResource = image.createImageSource(resource.buffer);
    let pixelMapInstance = await imageResource.createPixelMap();
    console.log(res + '');
    // 调用文本识别接口 实例化VisionInfo对象,并传入待检测图片pixelMap。
    // VisionInfo为待OCR检测识别的输入图片,目前仅支持PixelMap类型的视觉信息。
    let visionInfo: textRecognition.VisionInfo = {
      pixelMap: pixelMapInstance,
    };
    //配置通用文本识别的配置项TextRecognitionConfiguration,用于配置是否支持朝向检测等。
    let textConfiguration: textRecognition.TextRecognitionConfiguration = {
      isDirectionDetectionSupported: true
    };
    // 调用textRecognition的 recognizeText()接口,对识别到的结果进行处理。
    let recognitionResult = await textRecognition.recognizeText(visionInfo, textConfiguration);
    this.language = await textRecognition.getSupportedLanguages();
    console.log(recognitionResult + '');
    // 将结果更新到Text中显示
    let recognitionString = JSON.stringify(recognitionResult);
    this.text1 = recognitionResult.value;
    // if (recognitionResult.blocks[0].lines[0]. === 1)
    this.text2 = recognitionResult.blocks[0].value + '\n坐标:' + JSON.stringify(recognitionResult.blocks[0].lines[0].cornerPoints);
    this.text3 = JSON.stringify(recognitionResult.blocks[0].lines[0].words[3].value) + '\n坐标:' + JSON.stringify(recognitionResult.blocks[0].lines[0].words[3].cornerPoints);
    console.log("recognitionString");
    // hilog.info(0x0000, 'testTag', "textRecognition data is " + this.recognitionString);
    pixelMapInstance.release();
    imageResource.release();
  }
}

上诉是AI识别图片文字,进行ocr提取的demo,对于主要内容,可以参考一下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进