把 12000×2000 的订单长截图整张传给模型,返回说图片看不清,缩到长边 2048 后小字更糊,金额识别错了两处,手工比对才发现。

排查方向其实有限,先把可能性排一排。长边被等比压缩到 2048,小字只剩几像素;整图高度超出单图上限被拒绝或截断;切分点落在表格行中间,半行丢失;压缩成 JPEG 后小字出现振铃。

动手时先按高度均分成三段并留重叠

magick long.png -crop 12000x4200+0+0 +repage -quality 95 seg0.png

然后逐段单独识别避免整体缩放

python vision.py --image seg0.png --prompt "按行输出金额" --out seg0.json

随后按裁剪偏移把结果拼回原坐标

python stitch.py --parts seg0.json seg1.json seg2.json --offset 4200 --out table.json

剩下的就是用合计金额校验拼接结果

python check_sum.py --in table.json --expect 18450.00

命令输出我都留了记录,免得改完记不清原来的值。

恢复的判定其实很直接。三段结果拼出的表格行数完整,金额合计与页面底部一致,接缝处没有重复行。

容易忽略的是,长图不要整体缩放,切分加重叠再拼坐标,比把长边压到 2048 再识别准确得多。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189