修复9位数字被错误矫正问题

This commit is contained in:
甲辰生产 2026-04-12 00:40:16 +08:00
parent 5e8c0af131
commit bfd412e726
1 changed files with 6 additions and 6 deletions

View File

@ -1279,15 +1279,15 @@ async def batch_parse_deals(text: str = Body(..., embed=True)):
data = json.loads(content.strip())
# 对AI返回的数据进行冠字号矫正
def normalize_serial_ai(num_str):
"""矫正冠字号确保是J0+9位数字"""
"""矫正冠字号确保是J0+9位数字,只对位数不对的进行矫正"""
if not num_str.startswith('J0'):
return None
num = num_str[2:] # 去掉J0
diff = 9 - len(num)
# 位数正好9位不需要矫正
if diff == 0:
return num_str
elif diff == -1:
# 多1位去掉倒数第4位
if len(num) >= 4:
result = num[:5] + num[-4:]
if len(result) == 9:
@ -1379,22 +1379,22 @@ def parse_deals_locally(text: str, default_packaging: str = '', default_date: st
if not serial_match:
continue
# 冠字号矫正函数
# 冠字号矫正函数 - 只对位数不对的进行矫正
def normalize_serial(num_str):
"""矫正冠字号确保是J0+9位数字"""
num = num_str
diff = 9 - len(num)
# 位数正好9位不需要矫正
if diff == 0:
return 'J0' + num
# 位数不对才需要矫正
elif diff == -1:
# 多1位10位数字→ 去掉倒数第4位
# 例如: 298810101 → 去掉第4位(0) → 2988101 + 01 = 298810101 (9位)
if len(num) >= 4:
# 取前5位 + 最后4位
result = num[:5] + num[-4:]
if len(result) == 9:
return 'J0' + result
# 如果还是不对尝试去掉第5位
result2 = num[:4] + num[-5:]
if len(result2) == 9:
return 'J0' + result2