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

PrivId C# SDK如何获取控制台打印的条码识别结果字符串

问题场景

使用PrivID C# SDK实现驾驶证条码提取功能,当前实现代码如下:

var isvalid = privid_fhe_face1.is_valid(
    Image.Load(imagePath), 
    (int)privid_fhe_face.nContextEnum.IdBarcodeRGB);
            
isvalid.OutputResults(
    imagePath, 
    out_filder + "barcode" + isvalid.result + ".bmp");

运行上述代码后,条码识别结果仅直接打印到控制台,未找到对应接口获取条码的字符串结果,无法在应用内开展后续逻辑处理,需要可行的条码结果获取方法。

可行解决方法
  • 优先读取识别结果实例的公开属性:OutputResults方法本身只负责结果打印和标注图输出,不会返回结构化识别内容,识别完成后的条码字符串默认存储在isvalid实例的公开属性中:
    • 通用正式版SDK对应属性为isvalid.barcode_text,部分历史旧版本命名为isvalid.barcodeResult,直接读取该string类型属性即可拿到完整解析后的条码字符串,无需依赖控制台输出。
    • 读取前可通过isvalid.result字段判断识别状态:值为1时代表条码识别校验通过,此时读取到的条码内容有效性更高。
  • 若使用的是二次封装版本、未暴露上述条码属性,可通过重定向控制台输出做兜底捕获:在识别逻辑执行前将控制台输出重定向到内存流,识别完成后恢复控制台输出,从捕获的文本中提取条码内容即可,示例代码:
// 暂存原有控制台输出流,重定向到内存写入器
var originalConsoleOut = Console.Out;
using var stringWriter = new StringWriter();
Console.SetOut(stringWriter);

// 执行原有条码识别逻辑
var isvalid = privid_fhe_face1.is_valid(
    Image.Load(imagePath), 
    (int)privid_fhe_face.nContextEnum.IdBarcodeRGB);
isvalid.OutputResults(
    imagePath, 
    out_filder + "barcode" + isvalid.result + ".bmp");

// 恢复控制台输出,提取捕获的识别文本
Console.SetOut(originalConsoleOut);
string rawRecognitionOutput = stringWriter.ToString();
// 按实际打印的格式从rawRecognitionOutput中匹配提取条码字符串即可

注意:重定向控制台的方案仅作为兼容兜底方案使用,优先选择直接读取实例属性的方式,稳定性更高,也不需要额外做文本匹配处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:51:20