Тессеракт / OCR / OpenCV: нужно прочитать капчу - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь прочитать следующие картинки с магией, но пока безуспешно. Я могу использовать магию или OpenCV для решения этой проблемы.

Captcha Image

enter image description here

enter image description here

enter image description here

enter image description here

Итак, до сих пор я пробовал использовать функции эрозии, гауссового размытия и рисования, но я все еще не понимаю всего слова, прежде чем tesseract сможет обработать изображение. Я также попытался использовать белый список символов в tesseract, но, полагаю, ему нужно что-то, прежде чем он сможет использовать этот белый список.

Лучшее, чего я достиг, это изображение:

enter image description here

Используемая команда: magick.exe c:\e793df3c-b831-11e6-88e4-544635854505.jpg -negate -morphology erode rectangle:1 -negate -threshold 25% -paint 1 c:\ofdbmf-2.jpg

Это невозможно?

1 Ответ

0 голосов
/ 12 мая 2018

Для тех, кому интересно:

Есть два способа сделать это:

Метод № 1: Если у вас есть источник капчи

Если у вас уже есть доступный источник, вы можете посмотреть, какие шрифты используется источником. В этом методе, поскольку у нас есть исходный код, мы можем попытаться изменить его, чтобы сохранить максимум (возможно, более 10 000) изображений CAPTCHA вместе с ожидаемым ответом для каждого изображения.

Вы можете использовать простой цикл «для» и сохранить все изображения с правильным ответом в качестве имени файла.

Это будут ваши тренировочные данные.

Затем отсюда разделите изображение на каждую букву и укажите ссылку на букву из имени файла, чтобы у вас было несколько одинаковых буквенных изображений, созданных под разными углами и по форме. Здесь вы можете использовать BLOB-объекты OpenCV, затем пороговое значение, а затем выполнить поиск контура.

Одна проблема, с которой вы можете столкнуться здесь, заключается в том, что у вас будут перекрывающиеся буквы, поскольку простой взлом здесь состоит в том, чтобы сказать, что если одна область контура намного шире, чем высокая, это означает, что у нас, вероятно, две буквы сжаты все вместе. В этом случае мы можем просто разделить соединенную букву пополам посередине и рассматривать ее как две отдельные буквы.

Теперь, когда у нас есть способ извлечения отдельных букв, вы можете запустить его для всех изображений CAPTCHA. Цель состоит в том, чтобы собрать различные варианты каждой буквы. Мы можем сохранить каждое письмо в отдельной папке, чтобы упорядочить его.

Наконец, вы можете использовать простую архитектуру сверточных нейронных сетей с двумя сверточными уровнями и двумя полностью связанными уровнями.

Таким образом, вы будете иметь 100% -ную вероятность успеха при идентификации букв / цифр.

Метод № 2: Если у вас нет источника

Практически, вам нужно проделать большую работу сейчас, для начала убедитесь, что у вас есть опыт:

1) Python 2) Керас 3) тензор потока 4) OpenCV

Если вы это сделаете, то сделайте первый шаг, чтобы загрузить как можно больше изображений с картинки. Я обычно ищу опции CHROME Developers, а затем нахожу путь к капчам и затем зацикливаю их, чтобы начать их загрузку.

Затем с помощью OpenCV отфильтруйте загруженные изображения, создав BLOB-объекты, определение порога и определение контуров

Наконец, приходит обучающая часть, а затем тестирование и проверка.

Для получения дополнительной информации: https://mathematica.stackexchange.com/questions/143691/crack-captcha-using-deep-learning?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

...