Python 检测文本和反查看

Python 检测文本和反查看,python,opencv,Python,Opencv,有人问过类似的问题,但在我的情况下,这些问题似乎都没有帮助(尽管如此,我从这些线索中学到了一些东西) 我使用Tesseract进行OCR,但是当文本稍微倾斜时,结果远远不能令人满意(参见上图) 受类似案例的启发,我尝试使用OpenCV来检测和修复倾斜,但不幸的是,它似乎不起作用。下面,您可以看到我当前的尝试,但没有产生必要的结果。我得到的只是图像周围的另一个边界框(已经裁剪) 如果您有任何建议,我将不胜感激 Tesseract在文本出现一些扭曲时似乎遇到了很多麻烦 这样做的目的是找到文本的轮廓

有人问过类似的问题,但在我的情况下,这些问题似乎都没有帮助(尽管如此,我从这些线索中学到了一些东西)

我使用Tesseract进行OCR,但是当文本稍微倾斜时,结果远远不能令人满意(参见上图)

受类似案例的启发,我尝试使用OpenCV来检测和修复倾斜,但不幸的是,它似乎不起作用。下面,您可以看到我当前的尝试,但没有产生必要的结果。我得到的只是图像周围的另一个边界框(已经裁剪)


如果您有任何建议,我将不胜感激

Tesseract在文本出现一些扭曲时似乎遇到了很多麻烦

这样做的目的是找到文本的轮廓,使图像不失真,然后使用Tesseract。 轮廓通常是一个矩形,其变形与文本相同。因此,它在您的图像中不再显示为完美的矩形。Opencv为您提供了不同的查找方法
cv2.minareact()
查找最佳旋转矩形。这可能是足够的,取决于你的文字失真。否则,您可以使用
cv2.convexHull()
更好地匹配文本

轮廓应该为您提供要重新映射到常规矩形的文本的角点。您可以通过以下方式实现:

cv2.getAffineTransform(corners, dest_corners)    # requires 3 points
cv2.getPerspectiveTransform(corners, dest_corners)    # requires 4 points
然后

 cv2.warpAffine(...)
 cv2.warpPerspective(...)

另外,不要忘记正确设置Tesseract需要使用的页面分割方法()。在您的情况下,“6假设一个统一的文本块。”似乎已被修改。

非常感谢您的回答。我对OpenCV仍然没有什么经验,因此请您确认我对您的答案的总结是否准确:1)我仍然可以像上面那样使用cv2.MinareRect,但根据结果,我可能需要使用cv2.convexHull()2)之后,我应该使用
cv2.getAffineTransform(…)->cv2.Warpfaffine()
(或带有透视图的第二个选项)。预处理如何?我上面发布的内容是否足够?是的,您可以从cv2.MinareRect开始。它将适合文本周围的最佳矩形。因此,如果您的文本仅进行了旋转,这应该足够了。但是如果您的文本经历了透视变形,旋转的矩形将无法正确适合文本。在这种情况下,您可以可以使用凸面外壳,但它还需要一些额外的工作才能从外壳中找到文本的4个好角。我目前正在使用Minareact,出于某种原因,它只是绘制了一个边界框,我在对象检测阶段(图像被裁剪)后已经绘制了一个边界框。可能,我只是没有正确使用它。您是否检查了传递给MinareRect的点?该函数将查找最小面积边界矩形。您应该只传递与字母对应的点。(可能在颜色上使用阈值)
 cv2.warpAffine(...)
 cv2.warpPerspective(...)