我正在使用tesseract OCR来识别视频帧的文本。
我编写了一个程序,使用ffmpeg获取视频的所有主要帧,并对它们进行裁剪(用静态值)作为文本的中心(例如,它应该是字幕)。
我还使用了ImageMagick和TextCleaner脚本,它们像魔法一样提高了OCR的质量!
不管怎么说,有时候我的视频质量不太好,或者视频大小有点小,或者裁剪没有中间的文本(因为值是staitc),而OCR的结果非常糟糕。
我的问题是:如何才能检测到文本的正确位置?这将提高OCR的质量,取得更好的效果。
如有任何建议,将不胜感激。谢谢。
发布于 2014-12-06 02:06:29
您可以尝试使用边缘检测,也可以与其他方法结合使用。像这样(纯粹的边缘检测):
convert \
big.jpg \
\( \
big.jpg -colorspace gray -edge 8 -negate \
\) \
+append \
-resize 50% \
big-edge-8.png或者:
convert \
big.jpg \
\( \
big.jpg -colorspace gray -edge 25 -negate \
\) \
+append \
-resize 50% \
big-edge-25.png以下是两个结果:


另一种选择是减少颜色的数量,应用对比度拉伸和(可选)阈值:
convert \
big.jpg \
-colors 400 \
-contrast-stretch 25% \
colors-400-contraststretch-25.png
convert \
big.jpg \
-colors 400 \
-contrast-stretch 25% \
-threshold 50% \
colors-400-contraststretch-25-threshold-50.png

更新:“精明”边缘检测
您可能还想使用-canny。它实现了“精明”边缘检测算法,并在ImageMagick中出现在6.8.9-0版本之后。将其与-contrast-stretch和-colorspace gray相结合
convert big.jpg \
-colorspace gray \
-contrast-stretch 45% \
-canny 0x1+10%+30% \
canny1.png
convert big.jpg \
-colorspace gray \
-contrast-stretch 45% \
-canny 0x2+10%+30% \
canny2.png

https://stackoverflow.com/questions/27290574
复制相似问题