Skip to content

Commit 7e7c32a

Browse files
author
LazyFP Dev
committed
refactor: clean up rules.json, remove redundant patterns, standardize descriptions
1 parent 52f787f commit 7e7c32a

1 file changed

Lines changed: 13 additions & 24 deletions

File tree

config/rules.json

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,59 @@
11
{
22
"invoice_no": {
33
"primary": [
4-
{"pattern": "\\s*票\\s*号\\s*码[::]\\s*(\\d+)", "flags": 0, "desc": "Standard invoice code header"},
4+
{"pattern": "\\s*票\\s*号\\s*码[::]\\s*(\\d+)", "flags": 0, "desc": "Standard invoice number"},
55
{"pattern": "发票号码[::]?\\s*(\\d{20}|\\d{8,12})", "flags": 0, "desc": "Full-electric 20-digit or traditional 8-12 digit"}
66
],
77
"fallback": [
88
{"pattern": "\\b\\d{20}\\b", "flags": 0, "desc": "Pure 20-digit number (full-electric)"},
9+
{"pattern": "客户账号\\s*(\\d+)", "flags": 0, "desc": "China Mobile customer account"},
910
{"pattern": "\\s*(\\d{8})\\b", "flags": 0, "desc": "Old unified invoice monitor number"},
1011
{"pattern": "数电.*?号码[::]?\\s*(\\d{20})", "flags": 0, "desc": "Digital-electric invoice remark number"}
1112
]
1213
},
1314
"date": {
1415
"primary": [
15-
{"pattern": "\\s*票\\s*日\\s*期[::]\\s*(\\d{4}年\\d{1,2}月\\d{1,2}日)", "flags": 0, "desc": "Invoice date label with Chinese date"},
16-
{"pattern": "\\s*票\\s*日\\s*期[::]\\s*(\\d{4}[-/]\\d{1,2}[-/]\\d{1,2})", "flags": 0, "desc": "Invoice date label with ISO date"},
17-
{"pattern": "\\s*票\\s*日\\s*期[::]\\s*(\\S+?)(?=\\s|购|销|买|售|方|信|统|纳|$)", "flags": 0, "desc": "Invoice date label with lookahead stop"},
18-
{"pattern": "打印日期\\s*(\\d{4}/\\d{1,2}/\\d{1,2})", "flags": 0, "desc": "China Mobile print date"}
16+
{"pattern": "\\s*票\\s*日\\s*期[::]\\s*(\\d{4}年\\d{1,2}月\\d{1,2}日)", "flags": 0, "desc": "Invoice date (Chinese)"},
17+
{"pattern": "\\s*票\\s*日\\s*期[::]\\s*(\\d{4}[-/]\\d{1,2}[-/]\\d{1,2})", "flags": 0, "desc": "Invoice date (ISO)"},
18+
{"pattern": "打印日期\\s*(\\d{4}[-/]\\d{1,2}[-/]\\d{1,2})", "flags": 0, "desc": "China Mobile print date"}
1919
],
2020
"fallback": [
21-
{"pattern": "(20\\d{2}年\\d{1,2}月\\d{1,2}日)", "flags": 0, "desc": "Chinese date format"},
22-
{"pattern": "(20\\d{6})", "flags": 0, "desc": "Compact 8-digit date YYYYMMDD"},
23-
{"pattern": "开票日期[::]?\\D{0,15}(20\\d{2}\\s*\\d{1,2}\\s*\\d{1,2})", "flags": 0, "desc": "Invoice date with context"},
2421
{"pattern": "(\\d{4}年\\d{1,2}月\\d{1,2}日)", "flags": 0, "desc": "Generic Chinese date"},
25-
{"pattern": "(?:乘车|通行|航班|出发|到达)日期[::]?\\s*(\\d{4}[-/年.]\\d{1,2}[-/月.]\\d{1,2})", "flags": 0, "desc": "Travel/toll ticket date"},
26-
{"pattern": "(\\d{4}-\\d{2}-\\d{2})", "flags": 0, "desc": "ISO date format YYYY-MM-DD"},
22+
{"pattern": "(\\d{4}-\\d{2}-\\d{2})", "flags": 0, "desc": "ISO date YYYY-MM-DD"},
2723
{"pattern": "(\\d{4})[/\\.](\\d{1,2})[/\\.](\\d{1,2})", "flags": 0, "desc": "YYYY/MM/DD or YYYY.MM.DD"}
2824
]
2925
},
3026
"amount": {
3127
"primary": [
3228
{"pattern": "小写[::]?\\s*[¥¥]?\\s*([\\d,]+\\.\\d{2})", "flags": 0, "desc": "Lowercase amount with decimals"},
3329
{"pattern": "\\s*税\\s*合\\s*计.*?[¥¥]?\\s*([\\d,]+\\.\\d{2})", "flags": 0, "desc": "Price-tax total"},
34-
{"pattern": "\\(小写\\)[¥¥]?\\s*([\\d,]+\\.\\d{2})", "flags": 0, "desc": "Small write format"},
35-
{"pattern": "本期总费用\\s*[¥¥]?\\s*([\\d,]+\\.?\\d*)", "flags": 0, "desc": "China Mobile current period total"},
36-
{"pattern": "\\s*写.*?[¥¥]?\\s*([\\d,]+\\.?\\d*)", "flags": 0, "desc": "Lowercase amount"}
30+
{"pattern": "本期总费用\\s*[¥¥]?\\s*([\\d,]+\\.?\\d*)", "flags": 0, "desc": "China Mobile total fee"}
3731
],
3832
"fallback": [
3933
{"pattern": "(小写|价税合计)\\D{0,50}([¥¥]?\\d+\\.?\\d{2})", "flags": 0, "desc": "Flattened lowercase/total amount"},
40-
{"pattern": "[壹贰叁肆伍陆柒捌玖拾佰仟万亿圆角分整]{2,}\\D{0,10}([¥¥]?\\d+\\.?\\d{2})", "flags": 0, "desc": "Chinese uppercase amount heuristic"},
41-
{"pattern": "(?:合计金额|金额总计|应付金额|总金额)[::]?\\s*[¥¥]?\\s*([\\d,]+\\.?\\d{2})", "flags": 0, "desc": "Total amount variants"}
34+
{"pattern": "[壹贰叁肆伍陆柒捌玖拾佰仟万亿圆角分整]{2,}\\D{0,10}([¥¥]?\\d+\\.?\\d{2})", "flags": 0, "desc": "Chinese uppercase amount heuristic"}
4235
]
4336
},
4437
"purchaser": {
4538
"primary": [
4639
{"pattern": "(?:购)?名称[::](.+?)(?:销|售|卖|纳税|统一|地址|开户)", "flags": 0, "desc": "Purchaser name label"},
4740
{"pattern": "买名称\\s*[::]?\\s*([\\u4e00-\\u9fa5()()]{2,50}?)(?:售名称|方方|方信)", "flags": 0, "desc": "JD-style: 买名称 without colon"},
48-
{"pattern": "打印次数\\d+([\\u4e00-\\u9fa5()()]{2,50})打印日期", "flags": 0, "desc": "China Mobile customer name (flat text)"},
49-
{"pattern": "客户\\s+([\\u4e00-\\u9fa5()()]{2,50})\\s+集团", "flags": 0, "desc": "China Mobile customer name (normal text)"}
41+
{"pattern": "客户\\s+([\\u4e00-\\u9fa5()()]{2,50})\\s+集团", "flags": 0, "desc": "China Mobile purchaser (between 客户 and 集团)"}
5042
],
5143
"fallback": [
5244
{"pattern": "\\s*称\\s*[::]\\s*([^\\s]+)", "flags": 0, "desc": "Generic name label"},
53-
{"pattern": "\\s*称\\s*[::]?\\s+([^\\s::]+)", "flags": 0, "desc": "Loose name match"},
5445
{"pattern": "购买方名称[::]\\s*([^\\n::]{2,50})", "flags": 0, "desc": "Digital-electric purchaser full label"},
55-
{"pattern": "([^\\n::]{4,30}?)\\s*统一(?:信用代码|社会信用代码)[::]\\s*[A-Z0-9]{18}", "flags": 0, "desc": "Company name via credit code reverse-lookup", "group": 1},
56-
{"pattern": "购方名称[::]\\s*([^\\n::]{2,50})", "flags": 0, "desc": "Purchaser short label"}
46+
{"pattern": "([^\\n::]{4,30}?)\\s*统一(?:信用代码|社会信用代码)[::]\\s*[A-Z0-9]{18}", "flags": 0, "desc": "Company name via credit code", "group": 1}
5747
]
5848
},
5949
"seller": {
6050
"primary": [
6151
{"pattern": "(?:销|售)名称[::](.+?)(?:买售|纳税|统一|地址|开户|复核|开票)", "flags": 0, "desc": "Seller name label"},
62-
{"pattern": "售名称\\s*[::]?\\s*([\\u4e00-\\u9fa5()()]{2,50}?)\\s*[::]{0,2}方", "flags": 0, "desc": "JD-style: 售名称 followed by company then 方"},
63-
{"pattern": "(中国移动通信集团[\\u4e00-\\u9fa5]+有限公司)", "flags": 0, "desc": "China Mobile group company as seller"}
52+
{"pattern": "售名称\\s*[::]?\\s*([\\u4e00-\\u9fa5()()]{2,50}?)\\s*[::]{0,2}方", "flags": 0, "desc": "JD-style: 售名称 followed by company"},
53+
{"pattern": "(中国移动通信集团[\\u4e00-\\u9fa5]+有限公司)", "flags": 0, "desc": "China Mobile seller"}
6454
],
6555
"fallback": [
66-
{"pattern": "销售方名称[::]\\s*([^\\n::]{2,50})", "flags": 0, "desc": "Digital-electric seller full label"},
67-
{"pattern": "销方名称[::]\\s*([^\\n::]{2,50})", "flags": 0, "desc": "Seller short label"}
56+
{"pattern": "销售方名称[::]\\s*([^\\n::]{2,50})", "flags": 0, "desc": "Digital-electric seller full label"}
6857
]
6958
}
7059
}

0 commit comments

Comments
 (0)