from PIL import Image
im = Image.open('receipt.jpg')
w, h = im.size
for i in range(0, h, 1300):
    im.crop((0, i, w, min(i + 1500, h))).save('part_%d.jpg' % i)

两米长的小票拼图传到接口,返回只识别出前 20 行,后面三分之一是空的,图片被内部缩到宽 1024。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:接口会把长边缩到固定尺寸,长宽比 1 比 8 的图缩完高度只剩几百像素,小字直接糊掉。长图需要先按重叠切片再逐段识别。

「长图切分识别」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

处理上按这个顺序:按高度切成 1500px 一段 上下重叠 200px;每段单独识别 按重叠区去重拼接;切片前确认原始分辨率不低于 200dpi;拼接后核对行数和总金额。

确认没问题再收工,长图识别行数与原件一致 合计金额对得上。

作者 9823189