HarmonyOS 鸿蒙Next文字识别(textRecognition)

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next文字识别(textRecognition)

textRecognition(文字识别)

通用文字识别服务提供图像信息转换为字符信息的能力。通过拍照、扫描等光学输入方式,把各种票据、卡证、表格、报刊、书籍等印刷品文字转化为图像信息,再利用文字识别技术将图像信息转化为计算机等设备可以使用的字符信息,便于用户提取字符内容、屏幕坐标及外框。目前本服务支持识别的语言有:简体中文、英文、日文、韩文、繁体中文五种语言。

起始版本:4.0.0(10)

导入模块

  1. import { textRecognition } from ‘@kit.CoreVisionKit’;

TextRecognitionConfiguration

通用文本识别的配置项,用于配置是否支持朝向检测。

系统能力: SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

名称

类型

只读

可选

说明

isDirectionDetectionSupported

boolean

表示是否支持文字朝向检测。

true:表示支持朝向检测;false:表示不支持朝向检测。

默认是true,支持朝向检测。如果能判断当前图片是正向的,则可考虑将该属性设置为false,以提升性能。

VisionInfo

待识别的视觉信息,目前仅支持颜色数据格式为RGBA_8888的PixelMap类型的视觉信息。

系统能力: SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

名称

类型

只读

可选

说明

pixelMap

image.PixelMap

待识别的图片。

PixelPoint

指示像素点的位置。

系统能力: SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

名称

类型

只读

可选

说明

x

number

像素点水平x坐标。

y

number

像素点纵向y坐标

TextWord

描述一个单词的信息,包括内容,以及外框的坐标。

系统能力: SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

名称

类型

只读

可选

说明

value

string

单词的文本内容。

cornerPoints

Array<PixelPoint>

以顺时针返回的单词外框位置点列表。

TextLine

描述图像中的一行文本。

系统能力: SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

名称

类型

只读

可选

说明

value

string

文本行的文本内容。

cornerPoints

Array<PixelPoint>

以顺时针返回该文本行的外框位置点列表。

words

Array<TextWord>

该行包含的单词信息。

TextBlock

描述图像中的文本块。

系统能力: SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

名称

类型

只读

可选

说明

value

string

段落的文本内容。

lines

Array<TextLine>

该段落包含的文本行内容。

TextRecognitionResult

文本识别的结果信息,包括文本内容和坐标信息。

系统能力: SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

名称

类型

只读

可选

说明

value

string

所识别的文本内容。

blocks

Array<TextBlock>

文本内容中的具体段落信息。

textRecognition.init

init(): Promise<boolean>

初始化文字识别服务。

系统能力:SystemCapability.AI.OCR.TextRecognition

起始版本:5.0.0(12)

返回值:

类型

说明

Promise<boolean>

Promise对象,返回初始化是否成功。

示例:

  1. import { textRecognition } from ‘@kit.CoreVisionKit’;
  2. async function initAndReleaseOCR() {
  3. try {
  4. // 初始化 OCR 服务
  5. const initResult = await textRecognition.init();
  6. console.log(‘OCR service initialization result:’, initResult);
  7. if (initResult) {
  8. console.log(‘OCR service initialized successfully’);
  9. // 这里可以添加使用 OCR 服务的代码
  10. // 例如: await textRecognition.recognizeText(…);
  11. // 使用完毕后,释放 OCR 服务
  12. await textRecognition.release();
  13. console.log(‘OCR service released successfully’);
  14. } else {
  15. console.log(‘Failed to initialize OCR service’);
  16. }
  17. } catch (error) {
  18. console.error(‘Error occurred:’, error);
  19. }
  20. }
  21. // 调用函数
  22. initAndReleaseOCR();

textRecognition.release

release(): Promise<void>

释放人脸检测分析器服务。

系统能力:SystemCapability.AI.OCR.TextRecognition

起始版本:5.0.0(12)

返回值:

类型

说明

Promise<void>

Promise对象,释放接口无返回值。

示例:

  1. import { textRecognition } from ‘@kit.CoreVisionKit’;
  2. async function initAndReleaseOCR() {
  3. try {
  4. // 初始化 OCR 服务
  5. const initResult = await textRecognition.init();
  6. console.log(‘OCR service initialization result:’, initResult);
  7. if (initResult) {
  8. console.log(‘OCR service initialized successfully’);
  9. // 这里可以添加使用 OCR 服务的代码
  10. // 例如: await textRecognition.recognizeText(…);
  11. // 使用完毕后,释放 OCR 服务
  12. await textRecognition.release();
  13. console.log(‘OCR service released successfully’);
  14. } else {
  15. console.log(‘Failed to initialize OCR service’);
  16. }
  17. } catch (error) {
  18. console.error(‘Error occurred:’, error);
  19. }
  20. }
  21. // 调用函数
  22. initAndReleaseOCR();

textRecognition.recognizeText

recognizeText(visionInfo: VisionInfo, callback: AsyncCallback<TextRecognitionResult>): void

识别视觉信息内包含的文本。使用Callback方式异步返回结果。

系统能力:SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

参数:

参数名

类型

必填

说明

visionInfo

VisionInfo

待识别的视觉信息。

callback

AsyncCallback<TextRecognitionResult>

回调函数,返回文字识别的对象。

错误码:

以下错误码的详细介绍请参见Core Vision Kit错误码

错误码ID

错误信息

200

Run timed out, please try again later.

401

The parameter check failed.

1001400001

Failed to run, please try again.

1001400002

The service is abnormal.

示例:

  1. import { textRecognition } from ‘@kit.CoreVisionKit’
  2. import { image } from ‘@kit.ImageKit’;
  3. import { hilog } from ‘@kit.PerformanceAnalysisKit’;
  4. import { BusinessError } from ‘@kit.BasicServicesKit’;
  5. import { picker, fileIo } from ‘@kit.CoreFileKit’;
  6. let imageSource: image.ImageSource | undefined = undefined;
  7. let chooseImage: PixelMap | undefined = undefined;
  8. // 将图片转换为PixelMap,可以通过图库获取
  9. let photoPicker = new picker.PhotoViewPicker();
  10. photoPicker.select({
  11. MIMEType: picker.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1
  12. }).then((res: picker.PhotoSelectResult) => {
  13. let uri = res.photoUris[0];
  14. if (uri === undefined) {
  15. hilog.error(0x0000, ‘OCRDemo’, “Failed to get uri.”);
  16. return;
  17. }
  18. setTimeout(async () => {
  19. let fileSource = await fileIo.open(uri, fileIo.OpenMode.READ_ONLY);
  20. imageSource = image.createImageSource(fileSource.fd);
  21. chooseImage = await imageSource.createPixelMap();
  22. hilog.info(0x0000, ‘OCRDemo’, chooseImage:${chooseImage.toString()});
  23. if (!chooseImage) {
  24. return;
  25. }
  26. // 调用文本识别接口
  27. let visionInfo: textRecognition.VisionInfo = {
  28. pixelMap: chooseImage
  29. };
  30. textRecognition.recognizeText(visionInfo, (error: BusinessError, data: textRecognition.TextRecognitionResult) => {
  31. if (error.code !== 0) {
  32. hilog.error(0x0000, ‘OCRDemo’, Failed to recognize text. Code: ${error.code}, message: ${error.message});
  33. return;
  34. }
  35. // 识别成功,获取对应的结果
  36. let recognitionString = data.toString();
  37. hilog.info(0x0000, ‘OCRDemo’, Succeeded in recognizing text:${recognitionString});
  38. if(chooseImage && imageSource) {
  39. chooseImage.release();
  40. imageSource.release();
  41. }
  42. });
  43. }, 100)
  44. }).catch((err: BusinessError) => {
  45. hilog.error(0x0000, ‘OCRDemo’, Failed to get photo image uri. Code:${err.code},message:${err.message});
  46. })

textRecognition.recognizeText

recognizeText(visionInfo: VisionInfo, configuration?: TextRecognitionConfiguration): Promise<TextRecognitionResult>

识别视觉信息内包含的文本。使用Promise方式异步返回结果。

系统能力:SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

参数:

参数名

类型

可选

说明

visionInfo

VisionInfo

待识别的视觉信息。

configuration

TextRecognitionConfiguration

识别的配置项。

返回值:

类型

说明

Promise<TextRecognitionResult>

Promise对象,返回文字识别的结果对象。

错误码:

以下错误码的详细介绍请参见Core Vision Kit错误码

错误码ID

错误信息

200

Run timed out, please try again later.

401

The parameter check failed.

1001400001

Failed to run, please try again.

1001400002

The service is abnormal.

示例:

  1. import { textRecognition } from ‘@kit.CoreVisionKit’
  2. import { image } from ‘@kit.ImageKit’;
  3. import { hilog } from ‘@kit.PerformanceAnalysisKit’;
  4. import { BusinessError } from ‘@kit.BasicServicesKit’;
  5. import { picker, fileIo } from ‘@kit.CoreFileKit’;
  6. let imageSource: image.ImageSource | undefined = undefined;
  7. let chooseImage: PixelMap | undefined = undefined;
  8. // 将图片转换为PixelMap,可以通过图库获取
  9. let photoPicker = new picker.PhotoViewPicker();
  10. photoPicker.select({
  11. MIMEType: picker.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1
  12. }).then((res: picker.PhotoSelectResult) => {
  13. let uri = res.photoUris[0];
  14. if (uri === undefined) {
  15. hilog.error(0x0000, ‘OCRDemo’, “Failed to get uri.”);
  16. return;
  17. }
  18. setTimeout(async () => {
  19. let fileSource = await fileIo.open(uri, fileIo.OpenMode.READ_ONLY);
  20. imageSource = image.createImageSource(fileSource.fd);
  21. chooseImage = await imageSource.createPixelMap();
  22. hilog.info(0x0000, ‘OCRDemo’, chooseImage:${chooseImage.toString()});
  23. if (!chooseImage) {
  24. return;
  25. }
  26. // 调用文本识别接口
  27. let visionInfo: textRecognition.VisionInfo = {
  28. pixelMap: chooseImage
  29. };
  30. let recognitionResult = await textRecognition.recognizeText(visionInfo);
  31. // 识别成功,获取对应的结果
  32. let recognitionString = recognitionResult.toString();
  33. hilog.info(0x0000, ‘OCRDemo’, Succeeded in recognizing text:${recognitionString});
  34. if(chooseImage && imageSource) {
  35. chooseImage.release();
  36. imageSource.release();
  37. }
  38. }, 100)
  39. }).catch((err: BusinessError) => {
  40. hilog.error(0x0000, ‘OCRDemo’, Failed to get photo image uri. Code:${err.code},message:${err.message});
  41. })

textRecognition.recognizeText

recognizeText(visionInfo: VisionInfo, configuration: TextRecognitionConfiguration, callback: AsyncCallback<TextRecognitionResult>): void

识别视觉信息内包含的文本。使用Callback方式异步返回结果。

系统能力:SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

参数:

参数名

类型

可选

说明

visionInfo

VisionInfo

待识别的视觉信息。

configuration

TextRecognitionConfiguration

识别的配置项。

callback

AsyncCallback<TextRecognitionResult>

识别结果的回调,可以用于界面显示或交互。

错误码:

以下错误码的详细介绍请参见Core Vision Kit错误码

错误码ID

错误信息

200

Run timed out, please try again later.

401

The parameter check failed.

1001400001

Failed to run, please try again.

1001400002

The service is abnormal.

示例:
  1. import { textRecognition } from ‘@kit.CoreVisionKit’
  2. import { image } from ‘@kit.ImageKit’;
  3. import { hilog } from ‘@kit.PerformanceAnalysisKit’;
  4. import { BusinessError } from ‘@kit.BasicServicesKit’;
  5. import { picker, fileIo } from ‘@kit.CoreFileKit’;
  6. let imageSource: image.ImageSource | undefined = undefined;
  7. let chooseImage: PixelMap | undefined = undefined;
  8. // 将图片转换为PixelMap,可以通过图库获取
  9. let photoPicker = new picker.PhotoViewPicker();
  10. photoPicker.select({
  11. MIMEType: picker.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1
  12. }).then((res: picker.PhotoSelectResult) => {
  13. let uri = res.photoUris[0];
  14. if (uri === undefined) {
  15. hilog.error(0x0000, ‘OCRDemo’, “Failed to get uri.”);
  16. return;
  17. }
  18. setTimeout(async () => {
  19. let fileSource = await fileIo.open(uri, fileIo.OpenMode.READ_ONLY);
  20. imageSource = image.createImageSource(fileSource.fd);
  21. chooseImage = await imageSource.createPixelMap();
  22. hilog.info(0x0000, ‘OCRDemo’, chooseImage:${chooseImage.toString()});
  23. if (!chooseImage) {
  24. return;
  25. }
  26. // 调用文本识别接口
  27. let visionInfo: textRecognition.VisionInfo = {
  28. pixelMap: chooseImage
  29. };
  30. let textConfiguration: textRecognition.TextRecognitionConfiguration = {
  31. isDirectionDetectionSupported: false
  32. };
  33. textRecognition.recognizeText(visionInfo, textConfiguration, (error: BusinessError, data: textRecognition.TextRecognitionResult) => {
  34. if (error.code !== 0) {
  35. hilog.error(0x0000, ‘OCRDemo’, Failed to recognize text. Code: ${error.code}, message: ${error.message});
  36. return;
  37. }
  38. // 识别成功,获取对应的结果
  39. let recognitionString = data.toString();
  40. hilog.info(0x0000, ‘OCRDemo’, Succeeded in recognizing text:${recognitionString});
  41. if(chooseImage && imageSource) {
  42. chooseImage.release();
  43. imageSource.release();
  44. }
  45. });
  46. }, 100)
  47. }).catch((err: BusinessError) => {
  48. hilog.error(0x0000, ‘OCRDemo’, Failed to get photo image uri. Code:${err.code},message:${err.message});
  49. })

textRecognition.getSupportedLanguages

getSupportedLanguages(): Promise<Array<string>>

获取当前文本识别所支持的语言类型列表。通过Promise异步返回。

系统能力:SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

返回值:

类型

说明

Promise<Array<string>>

Promise对象,返回所支持的语言类型列表

错误码:

以下错误码的详细介绍请参见Core Vision Kit错误码

错误码ID

错误信息

1001400001

Failed to run, please try again.

1001400002

The service is abnormal.

示例:

  1. import { textRecognition } from ‘@kit.CoreVisionKit’;
  2. import { hilog } from ‘@kit.PerformanceAnalysisKit’;
  3. import { BusinessError } from ‘@kit.BasicServicesKit’;
  4. textRecognition.getSupportedLanguages().then((data: Array<string>) => {
  5. let languageString = data.join(’, ‘);
  6. hilog.info(0x0000, ‘OCRDemo’, Succeeded in recognizing text:${languageString});
  7. }, (err: BusinessError) => {
  8. hilog.error(0x0000, ‘OCRDemo’, Failed to obtain the language. Code:${err.code}, message:${err.message});
  9. });

textRecognition.getSupportedLanguages

getSupportedLanguages(callback: AsyncCallback<Array<string>>): void

获取当前文本识别所支持的语言类型列表。使用Callback方式异步返回结果。

系统能力:SystemCapability.AI.OCR.TextRecognition

起始版本:4.0.0(10)

参数:

参数名

类型

可选

说明

callback

AsyncCallback<Array<string>>

所支持的语言类型列表

错误码:

以下错误码的详细介绍请参见Core Vision Kit错误码

错误码ID

错误信息

1001400001

Failed to run, please try again.

1001400002

The service is abnormal.

示例:

  1. import { textRecognition } from ‘@kit.CoreVisionKit’;
  2. import { hilog } from ‘@kit.PerformanceAnalysisKit’;
  3. import { BusinessError } from ‘@kit.BasicServicesKit’;
  4. textRecognition.getSupportedLanguages().then((data: Array<string>) => {
  5. let languageString = data.join(’, ');
  6. hilog.info(0x0000, ‘OCRDemo’, Succeeded in recognizing text:${languageString});
  7. }, (err: BusinessError) => {
  8. hilog.error(0x0000, ‘OCRDemo’, Failed to obtain the language. Code:${err.code}, message:${err.message});
  9. });

语言类型列表

语言(英)

语言(中)

zh-CN

简体中文

en

英文

ja

日文

ko

韩文

zh-TW

繁体中文

2 回复
升级到Beta2之后6和9、0和O,7和L,银行卡上的经常识别不对,怎么破

HarmonyOS 鸿蒙Next支持文字识别(textRecognition)功能,该功能可以将图片中的文字转化为可编辑的文本。通过调用CoreVisionKit中的textRecognition模块,开发者可以实现相册图片识别、相机预览识别等多种场景下的文字识别。使用前需确保设备已获取相机权限,并配置好相应的开发环境和依赖库。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部