Я использую Tesseract OCR для распознавания текста видеокадров.
Я написал программу, которая использует ffmpeg
получить все основные кадры видео и обрезать их (со статическими значениями) для центрирования текста (это могут быть, например, субтитры).
Я также использую ImageMagick
а также TextCleaner
скрипты, и они улучшают качество распознавания как волшебство!
В любом случае, иногда у меня не очень хорошее качество видео, или размер видео немного мал, или обрезать не центральный текст (потому что значения — staitc), и результаты распознавания очень плохие.
Мой вопрос: как я могу определить правильное положение текста в нужной культуре?
Это должно улучшить качество распознавания текста и получить лучшие результаты.
Любые предложения будут ценны. Благодарю.
Вы можете попробовать поиграть с обнаружение края, и, возможно, в сочетании с другими вашими методами. Как это (чисто определение края):
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
Других решений пока нет …