Поки дехто мірявся розміром (серверів, etc.), тихо і непомітно (23 січня, а я помітив цю подію лише позавчора (крики "пхе, баян!" за сценою)) вийшла нова версія ВПЗ програми для розпізнавання текстів
tesseract 2.02.
З часу минулої версії було багато виправлень. Зокрема виправлено помилку пов’язану з жорстким вкодуванням розпізнавання латинського "О" (через помилкове спрацьовування на кириличних абетках програма падала).
Зміни дозволяють зробити українську розпізнавалку, що не падала б. Чим я і займався вчора. Результати надаю на Ваш розсуд.
Отже, завантажуйте програму (поки що доступне лише svn) командою
svn checkout http://tesseract-ocr.googlecode.com/svn/trunk/ tesseract-ocr-read-only
(трафік більше 30Мб, вибачте, але не я пакую це все, в основному там файли розпізнавання для інших мов, якщо хтось підкаже як цього не вантажити буду вдячний (при цьому трафік впаде до 1,9 Мб). Порізаний архів з програмою (програма + англійська) я виклав
тут (ті самі 1,9Мб). Крім цього потрібні також файли для розпізнавання української (а Ви думали!). Їх можна взяти
звідси (~2,1Мб) (Велике спасибі Сергію Єгорову за наданий майданчик для моїх вправ).
Програму збираємо (користувачі офтопіка беруть ліцензійний VC — ги-ги) за допомогою улюбленого компілятора C (от зараз прийде Cthulhu і перепише все на Python — ги-ги — зауваження автора). (Користувачі халявних дисків з Ubuntu: у Вас немає компілятора — сидимо, журимося і лаємо Марка).
Файли мов слід видобути у теку tessdata, туди, де Ви встановили програму (українську треба перед цим виколупати з теки ukr — все скидається до однієї купи).
Розпізнавання проводиться поки без графічного інтерфейса (він є але на Java в поки що в зародковому стані (підтека java) — автор через небажання встановлювати Java так його і не випробував). (До користувачів Cuneiform — судячи з розмов аналітиків LOR, як ближчих до тіла цієї контори, ніякого відкриття вихідних текстів поки не буде, а портування силами ентузізястів після відкриття теж триватиме не коротко (пан Piktor може спати, KDE4.1 вийде раніше)). Розпізнавання таким чином відбувається з командного рядка. Програма підтримує графічний формат засканованих файлів tif, поки не підтримує збереження розмітки тексту і багатомовні документи. Файли української зорієнтовано на найчастіше уживані шрифти документів — Times і Arial.
Отже, для розпізнавання слід віддати з консолі команду (ні не rm -rf ./ як багато хто думає), а
tesseract file.tif output -l ukr
, де file.tif — заскановене зображення (можна отримати за допомогою kooka (прихильники строгого і красивого менеджера стільниць незадоволено гудуть і погрюкують стільцями)), output — назва (передбачаючи незадоволені вигуки прихильників "імені файла", автор щулиться) файла з вихідною інформацією ( розпізнаним текстом).
Чудес не буває, і я розумію, що якість може декого не задовольнити. Будемо працювати над покращенням. Отже, якщо Ви не задоволені, киньтесь файлом у мою пошту (особливо цікавлять документи, які страх як погано розпізнались), або дійте за такою схемою ("Developers, Developers, Developers...."):
1) Деякі літери зливаються у одну (або одна літера розпізнається як дві):
ліземо до файла ukr.DangAmbigs і записуємо правильне значення та помилку у файл (циферки означають кількість літер, між літерами і циферками знаки табуляції).
2) Автор українізаціії сам суцільна помилка еволюції, має ненауковий підхід до проблеми, просто ...
Робимо свій варіант за допомогою мого (справжні джедаї витирають мій і роблять свій варіант з нуля):
а) Беремо скан або результат перетворення роздрукованого на PS-друкарці (в автора плюються всі хто надає перевагу іншій назві пристрою, що рахує сто листочків, якщо роздрукувати сто порожніх сторінок) файла на tiff (автор робив це у Gimp (ще раз передивився, щоб останньою не була "n")).
б) Застосовуємо до файла команду tesseract file.tif file -l ukr batch.nochop makebox
в) Правимо отриманий файл file.txt на предмет відповідності оригіналу (слід враховувати під час розділення літер, що склеїлися, що перша і третя координати є горизонтальними, отже, розділяючи, можна просто скопіювати відповідний рядок і підправити першу і третю координати (якщо літера нижча то і другу). Коротше кажучи, треба вміти додавати і віднімати (розчарована група студентів КНУБА, яких автор ніяк не може навчити це робити, піднімається і виходить).
г) Отриманий виправлений файл перейменувати на file.box
д) Нацькувати на нього tesseract з метою тренування: tesseract file.tif junk nobatch box.train
е) Накопичивши критичну масу тренувальних файлів, виконати: mftraining file_1.tr file_2.tr ... , а потім cntraining file_1.tr file_2.tr ...
є) Для створення таблиці символів виконати: unicharset_extractor fontfile_1.box fontfile_2.box ...
ж) Джедаї, які начисто витерли мої файли, роблять свої файли словників (всіх слів та найчастіше уживаних слів), а потім перетворюють їх командами
wordlist2dawg frequent_words_list freq-dawg
wordlist2dawg words_list word-dawg
У мене (Athlon 1600+) створення таких списків займало близько 3 годин (ще один привід поміряться, списки можу за бажання надати).
з) Прості падавани копіюють відповідні файли замість моїх (очевидно, що слід просто додати префікс ukr до отриманих Вами файлів).
На цьому дозвольте закінчити. Автор вибачається перед усіма (хтось пішов від мене незгаданим? — вибачте) чиї священі почуття він зачепив протягом цієї довгої промови.
Окреме вибачення за кількість дужок, що робить повідомлення схожим на програму на якомусь з діалектів Lisp — я не можу писати інакше (пробував).