Автор Гілка: Tesseract Ukrainian  (Прочитано 46082 раз)

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3628
  • Карма: +2/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Tesseract Ukrainian
« : 2008-02-17 11:01:09 »
Поки дехто мірявся розміром (серверів, 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 — я не можу писати інакше (пробував). :'(
Denounce the demagogues
King diamonds to discard
Deploy the dialogue
Your word against the law

Praporshic

  • Гість
Re: Tesseract Ukrainian
« Відповідей #1 : 2008-02-17 13:11:55 »
Цитата
Може Ви хочете образити мого чуба або мого піштоля?
"Пропала Грамота".

Невже не можна було дати мені й перший файл для розміщення? Виклав його поруч з першим.

Відсутній piktor

  • Видавець
  • *******
  • дописів: 3396
  • Карма: +0/-0
Re: Tesseract Ukrainian
« Відповідей #2 : 2008-02-17 13:20:16 »
Цитата
(пан Piktor може спати, KDE4.1 вийде раніше)
yurchor, Вам протипоказано писати великі та складні тексти - їх дуже важко розуміти. Зокрема я не зрозумів до чого тут KDE 4.1 до Tesseract, і для чого мені спати? Кеди4 - виключно для цікавості, тоді як Tesseract допоможе відмовитися від деяких пропрієтарних продуктів.
Як потрапля під свій домашній Лінукс - закачаю.
Всим, хто тоне й не знає,
За що вхопитись,
Хто вже з останніх
Вибився сил:
Попереджаю - я не колода,
Попереджаю - я крокодил.

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3628
  • Карма: +2/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Tesseract Ukrainian
« Відповідей #3 : 2008-02-17 15:19:40 »
Off-topic:
Ну який же Ви графоман як не написали хоча б одного довгого незрозумілого тексту?  :) Декому протипоказано читати довгі незрозумілі тексти. Буду вчитися на LOR як писати коротко і незрозуміло або довго і зрозуміло. ;)
2Сергій Єгоров: я не подивився на офіційний сайт проекту і тому не знав, що вони не спакували нову версію (завантажував з svn, бо минулого року робив копію і хотів слідкувати за змінаим). Вибачте!
« Змінено: 2008-02-17 15:22:52 від yurchor »
Denounce the demagogues
King diamonds to discard
Deploy the dialogue
Your word against the law

Відсутній piktor

  • Видавець
  • *******
  • дописів: 3396
  • Карма: +0/-0
Re: Tesseract Ukrainian
« Відповідей #4 : 2008-02-17 19:04:52 »
Off-topic:
Ну який же Ви графоман як не написали хоча б одного довгого незрозумілого тексту?  :) Декому протипоказано читати довгі незрозумілі тексти. Буду вчитися на LOR як писати коротко і незрозуміло або довго і зрозуміло. ;)
*yurchor уже було збирався розродитися якимось графоманським дописом, але раптом перед його очима спливла картина: місячне сяйво, лункі кроки Сергія Єгорова, брязкіт плюсомета, і вся весела і дотепна кумпанія отримує бан до весни. Він стримується...
Натяк на те, що пан Єгоров в інтернеті в основному по ночах.
« Змінено: 2008-02-17 19:07:05 від Piktor »
Всим, хто тоне й не знає,
За що вхопитись,
Хто вже з останніх
Вибився сил:
Попереджаю - я не колода,
Попереджаю - я крокодил.

Praporshic

  • Гість
Re: Tesseract Ukrainian
« Відповідей #5 : 2008-02-17 19:40:47 »
Натяк на те, що пан Єгоров в інтернеті в основному по ночах.
Не вірно. В Мережі я майже цілодобово. А от на "полювання" частенько виходжу вночі, коли вже набридає [smiley=mad.gif] і стаю [smiley=angry2.gif] як [smiley=evil.gif]

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3628
  • Карма: +2/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Tesseract Ukrainian
« Відповідей #6 : 2008-02-17 21:26:14 »
Упс. Нашвидку пакуючи все добро забув почистити Make-файли. Тому Makefile.am і Makefile.in у підтеці tessdata слід перед запуском ./configure замінити на файли з архіву, що додається.
Вибачте за незручності.
Крім того, не переживайте, якщо make install завершиться помилкою. Програма намагається встановити Java-інтерфейс, а у Вас може не бути відповідного компілятора. Не біда, без цього можна обійтися. Якщо комусь муляє — можна прибрати відповідні літери (java) з файла Makefile.in

Ще раз вибачте... :-[
Denounce the demagogues
King diamonds to discard
Deploy the dialogue
Your word against the law

Відсутній piktor

  • Видавець
  • *******
  • дописів: 3396
  • Карма: +0/-0
Re: Tesseract Ukrainian
« Відповідей #7 : 2008-02-23 22:24:52 »
Так, yurchor, я прокинувся (на вашу світлу голову), поставив собі tesseract, розпакував файли для української мови в папку, відсканував у tiff шматок українського тексту (досить чіткий), натравив на нього tesseract, він провів якусь роботу і видав текстовий файл з недрукованими символами (файл має ненульовий розмір)
tesseract out.tiff 1 -l ukr
В архіві відскановане зображення я перебив у jpeg бо не влізає tiff.
Всим, хто тоне й не знає,
За що вхопитись,
Хто вже з останніх
Вибився сил:
Попереджаю - я не колода,
Попереджаю - я крокодил.

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3628
  • Карма: +2/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Tesseract Ukrainian
« Відповідей #8 : 2008-02-24 07:36:47 »
Ви, звичайно, скажете, що я роблю щось не так, але...

Відкрив Ваше зображення за допомогою the GIMP. Оскільки виглядало воно не дуже, Збільшив яскравість до 32, а контрастність до 62. Зберіг як tiff (packbits).
Розпізнав. Результат додається (у кодуванні utf8).

Враховуючи якість зображення, прошу вважати результат дуже задовільним.

Може підкажете: яке у Вас системне кодування і чи присутня libtiff (може причина в цьому?).

Не ображайтеся, будь ласка, Ви, поки що, мій єдиний користувач і Ваша думка для мене дуже цінна.
Denounce the demagogues
King diamonds to discard
Deploy the dialogue
Your word against the law

Відсутній piktor

  • Видавець
  • *******
  • дописів: 3396
  • Карма: +0/-0
Re: Tesseract Ukrainian
« Відповідей #9 : 2008-02-24 14:13:37 »
Ой. В мене стоїть 2.01. Виправляю. Але, на всяк випадок, що я робив:
Встановив оригінальний tesseract - в ньому не було української мови. Розпакував файли з українською мовою і всунув у вказану папку. Ну і команду набрав. Файли воно знайшло, так як інакшого не казало.
І що до кодування - не знаю, я нічого не міняв. Яким може бути кодування за замовчуванням в локалізованій Слаці?
« Змінено: 2008-02-24 14:14:33 від Piktor »
Всим, хто тоне й не знає,
За що вхопитись,
Хто вже з останніх
Вибився сил:
Попереджаю - я не колода,
Попереджаю - я крокодил.

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3628
  • Карма: +2/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Tesseract Ukrainian
« Відповідей #10 : 2008-02-24 17:42:57 »
Йой, в 2.01 розпізнавання тихо падає!!! Працює лише у 2.02!

/me клянеться наступного разу висловлюватися від початку чіткіше!
« Змінено: 2008-02-25 06:54:23 від yurchor »
Denounce the demagogues
King diamonds to discard
Deploy the dialogue
Your word against the law

Відсутній piktor

  • Видавець
  • *******
  • дописів: 3396
  • Карма: +0/-0
Re: Tesseract Ukrainian
« Відповідей #11 : 2008-02-24 20:48:01 »
Йой, в 2.01 розпізнавання тихо падає!!! Працює лише у 2.02!

/me клянеться наступного разу висловлюатися від початку ціткіше!
я зрозумів що треба 2.02, проте не подивився на те що ставив - пам"ятав що 2 з копійками.
Ваш tesseract не ставиться, а гугль вище 2.01 не видав.
« Змінено: 2008-02-24 21:44:49 від Piktor »
Всим, хто тоне й не знає,
За що вхопитись,
Хто вже з останніх
Вибився сил:
Попереджаю - я не колода,
Попереджаю - я крокодил.

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3628
  • Карма: +2/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Tesseract Ukrainian
« Відповідей #12 : 2008-02-25 09:08:42 »
А все це тому, що дехто не дуже любить читати. ;)

Замініть make-файли і збереться (див. 6 повідомлень вгору). :)
« Змінено: 2008-02-25 09:09:29 від yurchor »
Denounce the demagogues
King diamonds to discard
Deploy the dialogue
Your word against the law

Відсутній piktor

  • Видавець
  • *******
  • дописів: 3396
  • Карма: +0/-0
Re: Tesseract Ukrainian
« Відповідей #13 : 2008-02-25 10:02:00 »
Ага, зрозумів, просто я спочатку не міг в"їхати нащо той архівчик, так як качав поспіхом і не перечитав.
Всим, хто тоне й не знає,
За що вхопитись,
Хто вже з останніх
Вибився сил:
Попереджаю - я не колода,
Попереджаю - я крокодил.

Відсутній mim

  • Новачок
  • *
  • дописів: 44
  • Карма: +0/-0
Re: Tesseract Ukrainian
« Відповідей #14 : 2008-02-25 10:08:10 »
Ну так, хоч якось працює, можна результат докласти (сканеру не було, довелося текст у KolourPaint малювати).
До речі, при компілюванні под posix-несумiсною ОС, має місце дивне явище: програма працює лише на тій машині, на якій була скомпільована.
А взагалі, залишити б нещасну програму у спокої, вона вже давно застаріла. Жирний і курсив не розпізнає, нижній регістр не розпізнає, текст шукати на сторінці не вміє. З зображеннями працює лише з бінарними. I щоб все те реалізувати, то легше вже написати систему з нуля.