似乎以下是唯一一个对页面进行扭曲处理的Python软件:
https://pypi.org/project/page-dewarp/
如果我错了,请纠正我,但我尝试查找 pytesseract 是否自动扭曲页面,我很确定它们不会,因为它们只是链接到上述网站。无论如何,在对页面进行扭曲处理后,我想使用 pytesseract 对其进行 OCR。我的问题是,上述去扭曲软件虽然去扭曲效果相当好,但它降低了图像的清晰度,因此无法改善 OCR。例如,这里有两张图像,第二张图像已去扭曲。
如您所见,虽然第二张图像的 DPI 为 300 像素,但仍然非常褪色,并导致大量 OCR 错误。我想也许页面扭曲软件会“减去”一些像素,因为包含原始图像中包含的每个像素会太慢。好吧,如果需要的话,我可以在睡觉时扫描书籍,我不在乎是否需要 8 个小时来使一本书变形。但是,我无法弄清楚这些参数的含义以便调整它们。我尝试联系软件设计师但没有收到回复。以下是 github 站点上列出的参数,删除了明显无用的参数。
-ta TEXT_MIN_ASPECT, --min-text-aspect TEXT_MIN_ASPECT
Filter out text contours below this w/h ratio
-tk TEXT_MAX_THICKNESS, --max-text-thickness TEXT_MAX_THICKNESS
Max reduced px thickness of detected text contour
-wz ADAPTIVE_WINSZ, --adaptive-winsz ADAPTIVE_WINSZ
Window size for adaptive threshold in reduced px
-ri RVEC_IDX, --rotation-vec-param-idx RVEC_IDX
Index of rvec in params vector (slice: pair of values)
-ti TVEC_IDX, --translation-vec-param-idx TVEC_IDX
Index of tvec in params vector (slice: pair of values)
-ci CUBIC_IDX, --cubic-slope-param-idx CUBIC_IDX
Index of cubic slopes in params vector (slice: pair of
values)
-sw SPAN_MIN_WIDTH, --min-span-width SPAN_MIN_WIDTH
Minimum reduced px width for span
-sp SPAN_PX_PER_STEP, --span-spacing SPAN_PX_PER_STEP
Reduced px spacing for sampling along spans
-eo EDGE_MAX_OVERLAP, --max-edge-overlap EDGE_MAX_OVERLAP
Max reduced px horiz. overlap of contours in span
-el EDGE_MAX_LENGTH, --max-edge-length EDGE_MAX_LENGTH
Max reduced px length of edge connecting contours
-ec EDGE_ANGLE_COST, --edge-angle-cost EDGE_ANGLE_COST
Cost of angles in edges (tradeoff vs. length)
-ea EDGE_MAX_ANGLE, --max-edge-angle EDGE_MAX_ANGLE
Maximum change in angle allowed between contours
我不知道这些意味着什么,也不知道什么才是改变这些参数的好数字。例如,假设图像的高度为 1401 像素,我有一种感觉,其中一个参数通过取 4 个像素的平均值,可能会将该数字减少到 300,如果我能找出如何禁止软件执行此操作,我可能会我的解决方案。
或者,如果有人知道用 Python 去扭曲图像的更好方法,那么我洗耳恭听。
你可以使用github上Mzucker制作的page-dewarp工具。 由于 Python2 已经不再支持,因此社区还提供了一个用 python3 编写的版本here。我认为提供的文档已经足够好了。