Что нового

Распознавание текста с картинок программой CAP

eropov

Jury
Сообщения
195
Репутация
25
Здравствуйте. Сегодня я расскажу как распознавать текст с картинок, при помощи программы CAP. Для начала нужно скачать саму программу CAP, скачать ее можно по адресу cap-cap.ru.
Принцип работы программы прост, в основу распознавания текста программой входят банальные шаблоны, тех самых символов картинки.
Для начала эксперимента нам нужно:
1. Картинка для распознавания
2. Программа CAP
3. Графический редактор
Первым делом нарезаем шаблоны символов из картинки которую хотим распознавать. Шаблоны необходимо сохранять в формате bmp. Имя шаблона должно иметь название самого символа т.е. если у нас имеется символ “R”, то шаблон должен называться R.bmp, если у нас имеется символ “r”, то шаблон должен называться r.bmp.
Прошу заметить, если фон картинки для распознавания имеет шумы, то в шаблоне их нужно затереть ластиком.
Допустим, распознаваемый текст на картинке имеет поворот символа под определенным градусом, тогда нам нужно сделать несколько шаблонов с поворотами текста и назвать из следующим образом, R.bmp, R1.bmp, т.е. программа CAP ориентируется на первый символ названия шаблона, а то что едет дальше отбрасывается.
Нарезанные шаблоны сохраняем в папке и кидаем папку с программой.
Теперь нам нужно настроить ini файл конфигурации, выглядит он следующим образом:
Код:
[OTHER]
;Картинка, показывающаяся в окне чекера (по умолчанию там белка) Формат - bmp размеры x=90 y=88 (большая будет обрезаться)
CheckerLogo=checker.bmp
;CheckerSound=checker.wav

;Путь сохранения файлов по каналу thanks. Если не указан, то КаталогЗагрузокПоУмолчанию\thanks
ThanksPath=

;Каталог, куда копировать капчи для постоянного сбора. При пустом значении копироваться не будут
CatalogBmp=
xWinCheck=758
yWinCheck=447
;CurX=471
;CurY=381

;РАСПОЗНАВАНИЕ

[CAP]
;Количество секунд окна проверки пользователем кода (0=окно будет только при ошибках, -1 - не будет никогда)
CheckerSec=0
;Количество ошибок для старта поиска обновлений шаблонов (При 0-ле обновления не искать)
ErrorsUpdate=0

;Тип алгоритма
type=

;распознавание
;первый проход
;Процент попадания
Percent=88
;Цветовая пороговая разница срабатывания между цветами, означающая, что цвета идентичны 0 означает, что совпадают только совсем одинаковые цвета
;Все цвета картинки складываются без множетелей. черный=0 белый=255+255+255
ColorDelta=272
;Исключить белые области шаблонов из рабочих
WithoutBackground=1

;второй проход
;Приоритет символов для опознавания, слева - самые значащие. Т.к. многие символы, например I являются составными частями других
PriorityString=WMNZRGKABHES68D4C52FPLTUVYJ3
;разница процентного отношения между символом, могущим быть частью другого
PriorityDelta=12

;общие настройки
;Имя файла для распознавания (если jpg, то рядом должен лежать Convert.exe для перевода в такой же bmp) (Возможно применение маски. Браться будет самый свежий файл)
FileNameCapture=1.bmp
;Имя файла для сохранения кода (Любое количество через запятую)
SaveToFile=1.txt
;копировать результат в буфер обмена, стирая все, что там держал подлый пользователь
Clipboard=0
;Имя каталога с литерами (Можно использовать литеры от Антикапчи)
CatalogLetters=привет мир
;Количество ожидаемых символов
Letters=4
;Длина капчи объявления ботом
ErrorCapthaLen=

;изображения
;предобработка краев
ShredBorderLetX=0
ShredBorderLetY=0
ShredBorderCapX=0
ShredBorderCapY=0
;прогонять образец по горизонтали
XMove=1
;прогонять образец по вертикали
YMove=1
;ограничиваться бордюром по горизонтали (отключается, если часть буквы теоретически может выйти за рамки картинки)
XBorderL=1
XBorderR=1
;ограничиваться бордюром по вертикали (отключается, если часть буквы теоретически может выйти за рамки картинки)
YBorderU=1
YBorderD=1

;автоматика
;применение ускорения. все по закону сохранения качества: скорость больше - результат хуже ;о(
Speed=1
;автоматически корректировать процент при ошибке распознавания на данную величину
AutoPercent=0.0
;автоматически снижать скорость при возникновении ошибок
AutoSpeed=0
;автоматически включать вертикальный прогон при необходимости
AutoYMove=1
;не применять автоматику, если период распознавания превышает параметр в секундах
AutoMaxTime=60



;служебные
;Количество текущих ошибок (руки прочь, нужно же программе где-то и свои переменные хранить ;о))) )
CountErrors=0
CLIDA=6029931879227236
CLID=4357619903978260



;Секция действий, если нас объявили ботом
[BOT]
;Команда
command=
;параметры команды
params=
;Прятать окно комманды
hide=1




;Секция запуска прочих программ распознавания, пока не найдем нужный код ... можно вызывать саму себя

[FR]
;Прятать окна прочих приложений
HideFR=1
;Приложение номер 0 ...
;Команда
Run0=
;Параметры
Param0=
;Где забирать результат (Имя файла или ключевое слово clipboard)
Result0=clipboard

;Команда 1 и так далее пока не найдем нужное кол-во буковок
Run1=
Param1=
Result1=








;Режим сирены при ошибках(можно использовать для старта чего угодно)

[SIREN]
;Количество ошибок для запуска режима (0-выключить)
ErrorSiren=0
;Команда
CommandSiren=ChatBeep.wav
;Параметры каманды
ParamSiren=
;Скрывать окно
HideSiren=0
;Ждать окончания процесса
WaitSiren=0
;Сколько раз повторять (один раз запустится и так)
RepeatSiren=100

[SHRED]
;Максимальная ширина букв (чтобы ножик не останавливался раньше времени)
LetterWidth=34
;Минимальная ширина букв, чтобы мусор не выводить
LetterWidthMin=34
;Инверсионная картинка
Inverse=0
;Угол наклона в градусах
Angle=10.0
;Упаковывать выходные шаблоны (обрезание краев и т.д)
Pack=1
;Оставлять от символа только контур при упаковке
SidebarPack=0




;ОБНОВЛЕНИЕ
[UPDATE]
;Количество ошибок для старта поиска обновлений на основных сайтах (При 0-ле обновления не искать)
;также если параметр не 0, то по определенному промежутку времени (около 2-х часов) происходит поиск
;обновлений самой программы и шаблонов
Errors=1000


[FONTSUPDATE]
last=
localname=cap_updateupdate.rar
command=rar.exe
params=x -o+ cap_updateupdate.rar cap_update
folder=cap_update
filecopy=*.bmp|*.fbt|*.gif|*.jpg|*.mp3|*.wav|*.txt|*.manifest
Для того чтобы посмотреть, что у нас получилось нужно ищем строки:
FileNameCapture=1.bmp(где, 1.bmp название картинки которую будем распознавать, должна лежать в папке с программой)
CatalogLetters=привет мир(где, привет мир это название папки с шаблонами)
SaveToFile=1.txt (где, 1.txt название файла в который будет заноситься распознанный текст, должен лежать в папке с программой)
Если у параметра CheckerSec выставить 0, то будет появляться окно с распознаваемой картинкой и распознанным текстом.
После всех манипуляций запускаем программу CAP через командную строку:
Cap.exe /recognize /ini привет мир.ini
Где, Cap.exe – название программы
/recognize – параметр который говорит что мы будем распознавать текст
/ini привет мир.ini – (привет мир)имя нашего файла конфигурации
Можно запустить AutoIT`ом :
Код:
#include <Process.au3>
_RunDOS(@ScriptDir & "\Cap\Cap.exe /recognize /ini привет мир.ini")
Скачать пример можно здесь http://zalil.ru/33204097
Попрошу не флудить тему, если будет вопросы, то пишите в личку. Вопросы заданные по существу будут дополнять тему.
Спасибо за внимание. :smile:
 
Верх