HarmonyOS 鸿蒙Next中在模拟器中调用相机接口以及相关的OCR功能
HarmonyOS 鸿蒙Next中在模拟器中调用相机接口以及相关的OCR功能 各位前辈大家好,本人小白一名第一次尝试鸿蒙app的开发,在模拟器中运行软件时出现了相机无法调用的问题,但是在设置-扫码的位置是可以调用到电脑的摄像头的,请问是在软件层做了限制吗?
还有我尝试写了一个相册的接口,能够通过相册读取来模拟拍摄得到图片的效果,但是我想通过ocr来获取到图片的信息时也会报错,经过查询,是因为模拟器没有hms cero,使用ocr需要依赖hms cero,请问各位大佬还有别的方式能够实现这个ocr功能吗?
你好:
经过测试确认,模拟器中App调用相机是可以实现。

详情参考文章:
【HarmonyOS NEXT】鸿蒙应用唤起系统相机拍照 | 华为开发者联盟
【HarmonyOS NEXT】自定义相机拍照和录像 (一)之拍照 | 华为开发者联盟
通过ocr来获取到图片的信息的代码可以发一下。
更多关于HarmonyOS 鸿蒙Next中在模拟器中调用相机接口以及相关的OCR功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
模拟器确实对相机API和HMS Core OCR有部分限制,扫码能调用是因为系统级支持,而应用层相机接口依赖模拟器的完整硬件模拟,部分版本不支持。
OCR方面,模拟器无HMS Core服务,所以无法使用HMS OCR。可改用:
- 纯前端轻量OCR库(如Tesseract.js),直接处理图片数据;
- 调用服务端OCR接口(如华为云OCR),上传图片获取结果;
- 直接用真机调试,能同时解决相机和HMS OCR的问题。
模拟器调用相机是有点限制的,参考这个《扩展能力-摄像头》看看你的配置。
-
拍照录像:Camera Kit提供了相机Picker。
-
《拉起系统相机》,这个示例,可以跑,比对下自己写的。
关于OCR,如果要做产品,官方的《Core Vision Kit》的OCR就可以,但要真机测试。
如果是学习用和小频率调用测试,远程调API可以满足,腾讯、阿里、科大讯飞、百度都有免费调用的。
看下你是想要这些能力吧,如下图

上述的能力是可以通过api 接口实现的, 我基本上会调用外部接口来实现一些复杂的ocr 能力
链接地址 https://www.textin.com/ , 如有帮助给个采纳谢谢
在鸿蒙模拟器里,你遇到的两个问题(相机、OCR)基本都不是你代码写错,而是模拟器能力限制导致的,这在新手阶段很常见。
1)模拟器里“系统扫码能调到电脑摄像头”,但你 App 调相机不行?
多数情况下是模拟器只对少数系统组件/系统应用开放了宿主机摄像头通道(例如系统“扫码”),但并不保证第三方应用通过 CameraKit/相机 API 能拿到同一通道。
你可以这样快速判断是哪一类问题:
A. 如果你的代码报的是 “801 Capability not supported” / “not supported”
基本就是:模拟器不支持该相机能力(或该 API 在模拟器侧没实现/被裁剪),只能上真机测。
B. 如果报权限相关(201/Permission denied 等)
那是软件侧问题,你需要:
- 在
module.json5声明相机权限(CAMERA) - 运行时动态申请权限
- 并且确保当前 Ability 在前台
但你描述“系统扫码可以、App 不行”,更像是 A(能力限制)而不是权限问题。
建议结论:相机这块,想稳定验证功能,请优先用真机;模拟器只能用来跑 UI/业务逻辑。
2)OCR 在模拟器报错:提示依赖 HMS Core(你说的 hms cero)
是的,很多 OCR/视觉类能力(尤其是“Kit”类的端侧 AI 能力)会依赖 HMS Core / Cero 之类的运行环境。模拟器通常不带,也基本没法像手机一样装全套 HMS Core 环境,所以会报你看到的错误。
3)那有没有“不依赖 HMS Core / 模拟器也能跑”的 OCR 方案?
有,但都属于“绕开端侧 Kit”的路线:
方案 1(最推荐,新手也最容易跑通):走云端 OCR(HTTP API)
流程:
- 模拟器用相册选图(你已经做到了)
- 把图片上传到你自己的服务端(或云函数)
- 服务端调用 OCR(你选用任意供应商的 OCR:华为云/百度/阿里/腾讯/Google 等)
- 把识别结果返回给 App
优点:模拟器可用、兼容最好、实现简单
缺点:需要网络与服务端;有费用/隐私合规要注意
方案 2:本地离线 OCR(Tesseract 等)——能做但不建议新手一开始就上
你可以把 OCR 引擎(如 tesseract + leptonica)编成 native 库,用 NAPI/ArkTS 调用。 优点:离线、无需 HMS
缺点:集成复杂、包体大、性能调优麻烦、适配成本高
方案 3:把 OCR 放到 PC 侧(开发期临时方案)
开发阶段先用“本地脚本/本地服务(Python OCR)”跑通联调,等真机环境 OK 后再决定端侧还是云侧。
4)你现在该怎么选(给你一个最省事的建议)
- 相机:不要纠结模拟器,直接真机调试(这是最省时间的)。
- OCR:如果你只是想把功能跑通,建议先用云端 OCR;等业务验证没问题,再考虑是否一定要端侧离线。
大概率是你没有申请相机权限吧。
在HarmonyOS Next模拟器中,调用相机接口需先声明ohos.permission.CAMERA权限,并使用@ohos.multimedia.camera API创建CameraManager获取预览流。OCR功能可集成@ohos.ai.ocr系统能力,直接对图像帧进行文本识别。注意模拟器可能缺失物理相机,需通过模拟输入或替换为本地图片进行验证。
模拟器中,系统级应用(如设置中的扫码)可直接调用摄像头,但第三方应用通过CameraKit等API访问相机受模拟器能力限制,目前不支持,并非代码问题。
OCR功能依赖HMS Core ML Kit,而HarmonyOS Next模拟器未内置HMS Core环境,因此直接调用会失败。若需在模拟器上实现文字识别,可改用本地文本识别库或第三方云端OCR服务。例如使用Tesseract.js(opencv结合)或调百度OCR API,示例:
// 调用百度OCR通用文字识别(需提前申请ak/sk)
function baiduOCR(imageBase64: string) {
const url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic';
const params = { image: imageBase64 };
http.request(url, { method: 'POST', body: JSON.stringify(params), ... });
}
但需注意网络权限配置。真机调试时,推荐直接使用HMS Core ML Kit原生方案,准确率和性能最优。




