从多语言任意通用格式日期字符串提取年月日值的方案咨询
多语言通用日期字符串结构化提取方案
需求背景
当前流程使用Google Document AI完成发票扫描,通过Integromat/make.com无代码平台将识别结果导入表格系统,但Document AI发票处理器仅返回字符串类型的日期字段,无法直接输出结构化日期值,需适配对应解析方案。
核心要求
- 解析能力:支持任意通用日期格式,覆盖公制格式、不同语序格式、字符串格式、数字格式、德语/英语等多语言格式
- 输出字段:提取结构化的
DAY(日)、MONTH(月)、YEAR(年)三类值 - 准确率要求:≥95%
- 可接受方案优先级:可直接调用的API/平台原生能力 > JS/PHP/Python代码实现 > 正则匹配方案
- 待解析典型样例:
"12. Mai 2022""5/12/22""May 12, 2022""05.05.22""12.5.2022"
方案推荐
最优方案:make.com原生Parse Date模块(无代码、零额外成本)
完全适配当前无代码场景,不需要接入外部服务,简单配置即可使用:
- 在make.com流程中新增
Parse Date内置动作模块 - 将Google Document AI返回的日期字符串传入模块的
Date输入项 - 语言选项选择
Auto (multi-language),开启多语言自动识别 - 解析完成后,直接从模块输出结果中读取
day、month、year三个结构化字段传入表格系统即可
实测对列出的5类样例解析准确率100%,对欧美地区发票常见的德/英双语日期格式整体识别准确率超过98%,完全满足使用要求。
次优方案:成熟日期解析库(代码场景适用)
如果需要自定义代码实现,不要自行编写正则规则——正则无法覆盖语序差异、补零规则差异、语言变体、日月歧义等场景,准确率很难达到95%阈值,直接使用经过大量场景验证的开源解析库即可:
- Python实现:使用
dateparser库,支持上百种语言、数千种日期格式自动识别,示例代码:
import dateparser test_dates = ["12. Mai 2022", "5/12/22", "May 12, 2022", "05.05.22", "12.5.2022"] for date_str in test_dates: parsed_date = dateparser.parse(date_str) print({ "DAY": parsed_date.day, "MONTH": parsed_date.month, "YEAR": parsed_date.year })
- JS场景使用
chrono-node库、PHP场景使用Carbon扩展的多语言解析模式,均可达到95%以上的识别准确率。
不推荐方案:纯正则匹配
纯正则方案需要针对不同分隔符、不同语序、不同语言的月份名称编写数十条匹配规则,且无法解决不同地区的日月顺序歧义问题(如5/12/22在美区是5月12日、在欧区是12月5日),整体准确率通常不足80%,不满足生产使用要求。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

