阅读文本 / Reading text
本文使用合成样本演示处理方法。代码已通过隔离环境中的示例检查;这不代表对所有真实文件或产品效果的保证。处理重要文件前,请保留原件,并按文中的边界与验收项复核。
扫描页灰蒙蒙,把对比度拉高确实更醒目,但浅色印章和细线也可能一起消失。预处理不是让图片看着更“硬”,而是为特定识别任务保留有用信息。没有对照结果时,不应把更黑更白直接称为更准确。
增强参数不是质量分数
Pillow 的
ImageEnhance.Contrast
根据参数调整对比度。参数为一表示保持原图,其他值产生不同候选。建议保留原图和少量候选,用相同 OCR 配置比较,而不是连续处理上一轮结果,最后失去可复现起点。
验证候选确实来自同一原图
from PIL import Image, ImageEnhance
source = Image.new("L", (3, 1))
source.putdata([100, 128, 150])
original = source.tobytes()
identity = ImageEnhance.Contrast(source).enhance(1.0)
candidate = ImageEnhance.Contrast(source).enhance(1.5)
assert identity.tobytes() == original
assert candidate.size == source.size
assert candidate.mode == source.mode
assert source.tobytes() == original
assert candidate.tobytes() != original
这组灰度值是合成输入,断言只检查变换与非破坏性行为。它没有文字标签、OCR 输出或准确率统计。参数一点五只是演示值,不是适合所有扫描仪的推荐设置。
重点看容易受损的内容
区域
对比时观察
失败后的选择
浅色章
细节是否消失
使用原图或较温和候选
表格线
是否断裂或粘连
分离表格结构与文字评估
小字号
笔画是否合并
不只看整页缩略图
背景污渍
是否被强化
调整局部策略而非盲加对比
想谈效果就准备标注样本
选择包含正文、数字、表格和印章的代表页,保存人工核对文本,再比较候选识别差异。即使某几页变好,也不能直接外推到所有文件。若没有标注,只能说视觉检查的观察,不能报告识别准确率提升。
翻译工作流需要完整性,不只是清爽画面
使用
OmniDoc(产品入口)
的 OCR 翻译时,淡色批注可能和正文同样重要。预处理后先确认这些信息还在,再评价双语输出。对交付而言,保留一个关键否定词或印章说明,比获得更漂亮的白底更重要。
参考:
Pillow ImageEnhance
。
- 1 -
更新于 2026-10-08