阅读文本 / Reading text
本文使用合成样本演示处理方法。代码已通过隔离环境中的示例检查;这不代表对所有真实文件或产品效果的保证。处理重要文件前,请保留原件,并按文中的边界与验收项复核。
把小图放大四倍,像素数会增加,但原本没有记录下来的笔画不会自动回来。重采样可以改变边缘形态,也可能让某个 OCR 输入管线更易处理;是否改善识别,需要实际对照,而不能从尺寸变化直接推导。
尺寸变化与信息增加不是一回事
最近邻保留块状像素,其他滤波方法会计算邻域混合值。不同方法适合不同图像与目的,没有一个滤波名称能保证所有文档更准。尤其是二值字形,平滑处理可能引入灰边,后续阈值步骤又会改变它。
对比同一输入的两种插值
from PIL import Image
source = Image.new("L", (2, 1))
source.putdata([0, 255])
nearest = source.resize((8, 4), Image.Resampling.NEAREST)
bilinear = source.resize((8, 4), Image.Resampling.BILINEAR)
assert nearest.size == bilinear.size == (8, 4)
assert set(nearest.getdata()) == {0, 255}
assert any(0 < v < 255 for v in bilinear.getdata())
assert list(source.getdata()) == [0, 255]
assert source.size == (2, 1)
合成例子展示的是插值产生中间灰度,并不是恢复了真实世界的额外细节。它依赖支持
Image.Resampling
的 Pillow 版本。将示例放进锁定环境,避免旧版常量写法与新版代码混用。
放大前先确认真正的限制
症状
先检查
不要直接假定
OCR 拒绝尺寸
接口长边与像素限制
越大越容易通过
小字模糊
原始采集分辨率
放大能恢复笔画
大图耗时高
总像素及分块方案
文件小就解码轻
坐标展示偏移
缩放映射是否保存
输出框还属于原图
与其连续放大,不如保留候选
从同一原件分别生成候选,不要把已经重采样的图再次反复处理。记录比例、滤波方法与输入摘要,才能复现实验。若可以获得更清晰扫描件,应优先比较重新采集,而不是无限调整插值参数。
把可读性与翻译质量分别验收
接入
OmniDoc(产品入口)
处理低清扫描件时,先检查识别文字,再检查译文。源文字已经误认,后面的流畅翻译也可能把错误表达得更自然。沿着识别到翻译的顺序排查,比只读最后一份译稿更可靠。
参考:
Pillow Image.resize
。
- 1 -
更新于 2026-10-08