invoice2data提取发票条目匹配失败报错Ignoring *Item line求助
问题根因排查
你的正则规则和实际发票条目格式存在3个核心不匹配点,直接导致匹配失败:
- 数值格式不兼容:原正则中
price/value/vat_value字段用\d+仅能匹配整数,而实际发票条目里的金额都是带小数点的(如83.79/15.92),完全无法命中。 - 商品名称匹配规则不合理:原正则要求商品名称每个单词后必须跟1个空格,既不支持名称中间的多空格分隔,也不兼容名称末尾无空格的场景,会直接截断匹配逻辑。
- 空白字符处理不全面:原正则仅匹配普通空格
[ ],无法兼容OCR识别出的制表符、跨行换行、多余连续空格,比如第二条日志里的86.5被拆成了两行,直接匹配失败。
调整方案
1. 修正正则规则
将原line字段的正则替换为如下版本,兼容小数、多空白、跨行场景:
\*\s*(?P<crt>\d+)\s+(?P<name>[\w\s\-\/]+?)\s+(?P<um>[a-zA-Z]+)\s+(?P<quantity>\d+)\s+(?P<price>\d+(?:\.\d+)?)\s+(?P<value>\d+(?:\.\d+)?)\s+(?P<vat_value>\d+(?:\.\d+)?)\s*\*
核心修改点:
- 数值匹配规则改为
\d+(?:\.\d+)?,同时支持整数和带小数的金额 - 空白匹配统一用
\s+,兼容空格、制表符、换行符 - 商品名称用非贪婪匹配
[\w\s\-\/]+?,自动匹配到下一个字段(单位um)前的所有内容 - 兼容日志中条目前后包裹的
*符号
2. 补充配置参数
在lines配置下添加multiline: true,允许正则跨行匹配,解决部分条目被OCR拆分到多行的问题:
lines: start: Valoarea TVA end: Data scadenta multiline: true line: # 替换为上面修正后的正则
内容的提问来源于stack exchange,提问作者shAkur
相关产品推荐
相关产品推荐

