You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi FireMonkey安卓应用在Zebra TC52上实现OCR扫描问题咨询

Zebra TC52 OCR扫描功能对接方案

Zebra TC52的OCR扫描能力不提供独立的隐式Intent调用接口,所有硬件扫描相关能力统一由设备预装的DataWedge服务托管,不需要集成EMDK SDK,通过广播Intent即可完成对接,适配Embarcadero RAD Studio 11的安卓开发环境没有兼容问题,具体实现步骤如下:

前置配置(设备端操作)

  • 打开TC52预装的DataWedge应用,新建独立配置Profile,绑定你开发的应用的正式包名,避免和设备上其他应用的扫描配置冲突
  • 进入Profile的Scanner Input设置项,将默认的条码扫描模式切换为OCR识别模式
  • 新增OCR识别规则:限定允许识别的字符集仅为0-9数字,固定识别长度为10位,可根据实际文档上的编号位置配置识别区域裁剪,缩小识别范围能大幅降低误识别率、提升识别速度
  • 进入Profile的Intent Output设置项,开启Intent输出,自定义一个唯一的广播Action(比如com.yourdomain.yourapp.OCR_RESULT),投递方式选择Broadcast Intent,开启「仅投递给前台活动」选项,避免结果被其他后台应用截获

RAD Studio 11 端代码实现

  • 工程不需要申请特殊运行时权限,仅需在窗体创建时注册对应Action的广播接收器,用于接收扫描结果
  • 界面按钮的点击事件中,直接向DataWedge发送广播触发扫描即可,不需要自行实现相机预览、OCR识别逻辑,核心触发代码如下:
uses
  Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers;

procedure TMainForm.BtnStartScanClick(Sender: TObject);
var
  TriggerIntent: JIntent;
begin
  TriggerIntent := TJIntent.JavaClass.init(StringToJString('com.symbol.datawedge.api.ACTION'));
  TriggerIntent.putExtra(
    StringToJString('com.symbol.datawedge.api.SOFT_SCAN_TRIGGER'),
    StringToJString('START_SCANNING')
  );
  TAndroidHelper.Context.sendBroadcast(TriggerIntent);
end;
  • 在广播接收器的回调中,从Intent的Extra字段提取识别结果,做格式校验后即可直接使用,核心结果处理代码如下:
uses
  System.RegularExpressions;

const
  DW_DATA_TAG = 'com.symbol.datawedge.data_string';
var
  OCRResult: string;
begin
  if FScanReceiver.getReceivedIntent.hasExtra(StringToJString(DW_DATA_TAG)) then
  begin
    OCRResult := JStringToString(
      FScanReceiver.getReceivedIntent.getStringExtra(StringToJString(DW_DATA_TAG))
    );
    // 校验结果为10位纯数字即符合业务要求
    if TRegEx.IsMatch(OCRResult, '^\d{10}$') then
      edtNo.Text := OCRResult;
  end;
end;

注意事项

  • 不要尝试自行调用系统相机实现OCR:TC52的OCR能力是基于内置硬件扫描引擎实现的,走DataWedge调用的识别速度、暗光环境识别率远高于通用相机OCR方案
  • 如果触发扫描无响应,优先检查DataWedge Profile绑定的包名是否和RAD Studio编译配置中的应用包名完全一致,包名大小写敏感,不一致时DataWedge不会响应应用的扫描请求
  • OCR识别规则必须配置字符集和长度限制,否则会识别到文档上其他无关数字,误识别率会非常高
  • 不要集成Zebra官方的EMDK for Android,该SDK对Delphi/C++Builder的跨平台编译适配存在大量兼容问题,纯Intent对接方案不需要引入任何第三方依赖,打包后APK无额外体积增量

内容的提问来源于stack exchange,提问作者user2623554

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:42:31