名片扫描是那种很容易被演示成“拍一下就出线索”的企业版功能。但只要你认真想一下现实场景:名片上可能有多语言、缩写、手机区号、州省简称,甚至根本扫不清。crm_enterprise 真正做的,是把这些不确定性收束成 CRM 能接受的数据。
主要参考:
enterprise/crm_enterprise/models/crm_lead.pyenterprise/crm_enterprise/tools/business_card_scanner.pyenterprise/crm_enterprise/views/crm_lead_views.xml
一、扫描入口只是开始,核心在 BusinessCardScanner
action_ocr_business_cards() 只是把附件送进扫描器。真正的业务逻辑在 BusinessCardScanner:它会决定走 OpenAI 还是 IAP、如何解析返回 JSON、哪些字段可以落到 crm.lead、哪些图片需要判定为失败。
二、归一化比 OCR 本身更重要
源码里能看到国家、州省、电话等字段会继续匹配和格式化。也就是说,即便 OCR 识别出一串文本,系统也不会直接原样塞进 lead,而是尽量把它变成 CRM 后续可筛选、可去重、可联系的数据。这一步决定了扫描结果是“看起来像线索”,还是“真的能被销售继续推进”。
三、失败也会生成回执对象,这是非常企业化的设计
很多人会以为识别失败就该静默报错。但 business_card_scanner.py 会为失败图片创建空 lead,并把附件挂上去、记录消息,告诉用户这张图没成功提取。这样做的好处是:运营或销售主管可以追查失败率,而不是让图片直接消失在上传动作里。
四、最容易误解的边界
- 名片扫描生成的是 opportunity / lead 对象,不是联系人主数据。
- OCR 成功不等于字段都可信;系统还要做格式化和地域映射。
- 失败回执不是脏数据,它是流程反馈的一部分。
五、实战建议
- 扫描前统一上传要求:清晰度、单张图片、避免强反光。
- 如果跨国业务多,先检查国家/州省主数据是否完整,否则归一化会频繁失败。
- 培训销售时要说明:扫描结果是“待判断的起点”,不是完全可信的客户档案。
六、结论
名片扫描的真正门槛,不在识别图片,而在把非结构化信息稳定地翻译成 CRM 里的可运营对象。crm_enterprise 在意的是这个翻译过程能不能闭环。
DISCUSSION
评论区