[英]Measuring image processing quality for tesseract ocr
我正在测试tesseract-ocr 的各种 Python图像预处理管道。
我的输入数据是 pdf 发票和各种质量的收据,从扫描文件(最好)到手机提供的在光线不足的情况下拍摄的照片(最差),以及介于两者之间的所有内容。 在为 OCR 执行手动扫描时,我通常会在几个扫描预设(不锐化蒙版、边缘填充、颜色增强、伽玛)中进行选择。 我正在考虑在 Python 管道中实施类似的解决方案。
我了解OCR 质量的标准指标是Levenshtein (编辑距离),它是与地面实况相比结果质量的衡量标准。
我所追求的是测量图像处理对 OCR 结果质量的影响。 例如,在这篇论文Prediction of OCR Accuracy中,作者描述了至少两个测量值White Speckle Factor (WSF)和Broken Character Factor (BCF) 。 我读过的其他描述符包括椒盐噪声和异常像素。
我已经在这里解决了 200 个近 4k tesseract 标记的问题。 很有意思。 大多数问题都是这种类型的,我有这种图像,我怎样才能改善 OCR 结果。 到目前为止,还没有关于测量图像处理对 OCR 结果的影响。
一个奇怪的问题是Dirty Image Quality Assesment Measure ,但这个问题并不集中在 OCR 上,而且解决方案似乎有点矫枉过正。
OCR 能力没有通用的图像改进技术。 每个图像缺陷都(部分)通过临时技术进行纠正,在一种情况下有效的技术在另一种情况下可能会适得其反。
对于同质数据集(从某种意义上说,所有文档具有相似的来源/质量并在相同条件下捕获),您确实可以通过尝试不同的组合和设置并计算总编辑距离来优化预处理链。 但这需要对基本事实的初步了解(至少对于文件的抽样)。
但对于异构数据集,您无能为力。 假设更好的可读性对应更好的正确性,仍然可以选择测试不同的预处理链并依赖 OCR 引擎返回的识别分数。
您还可以提取一些全局图像特征,例如对比度、信噪比、清晰度、字符大小和密度……并如上所述优化可读性。 然后将此信息提供给一个分类器,该分类器将学习如何处理不同的图像条件。 老实说,我不太相信这种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.