Распознавание текстов в Ubuntu
Discussion / Работа «Плантариума» / Forum

Plantarium
online plant identification guide

Discussion

Недавно перешёл с Windows на Ubuntu 18, возникла необходимость решить вопрос с распознаванием текстов из книжек в формате DjVu. Попробовал несколько смотрелок для DjVu. Наиболее удобным нашёл Okular. Что важно, он позволяет выделать фрагменты текста и сохранять из в формате PNG. Распознавание как и раньше под Windows выполняю с помощью Cuneiform, но в этот раз - из консоли. Итого, по шагам. 1. Открываю в Okular нужную страницу текста, увеличиваю масштаб просмотра по максимуму, чтобы сохранённая картинка была максимального размера (мелкий текст практически не распознаётся). Получаю картинку шириной чуть более 1000 px. 2. Выбираю Tools | Area selection (достаточно сделать один раз, выбор затем сохраняется). Выделяю прямоугольник, охватывающий текст и сохраняю как картинку в формате PNG (для удобства - в один и тот же файл "text.png"). 3. Если исходная страница перекошена, поворачиваю картинку в "text.png" до горизонтального положения строк (с обрезкой полей) в XnView. 4. Открываю консоль, перехожу в папку с "text.png" и запускаю Cuneiform:
cuneiform -l ruseng --singlecolumn -o result.txt text.png
5. Открываю в той же папке файл с распознанным текстом ("result.txt") в текстовом редакторе, исправляю ошибки распознавания и копирую текст на сайт. Обычная проблема - путаются буквы "и" и "н" и почему-то вместо символа тире выводится странная последовательность символов (—). Но в принципе, работы не больше, чем раньше.
Добавлю. У меня лучше получается распознать целиком DjVu файл, а потом оттуда брать нужные куски распознанного текста. Такой подход лучше тем, что все лежит в одном месте. Как это делается: 1) Нужно поставить DjView4, последний tesseract (это система распознавания от Google) со всеми языками, и ocrodjvu. Как это все ставить -- можно нагуглить, но если нужна инструкция, напишите. 2) Берем DjVu файл, понимаем какие там языки, запускаем в консоли: ocrodjvu --in-place -j 4 -l eng file.djvu и ждем. По умолчанию запускается tesseract, поэтому его указывать не надо. tesseract медленный, но _очень_ качественный, по многим тестам лучше FineReader, и уж куда лучше cuneiform. Кроме того, он развивается, то есть постоянно выходят новые версии (а cuneiform нет). "-j 4" значит, что распознавать надо в четыре потока (а если в системе процессоров больше, то лучше всегда ставить максимальное значение). Можно комбинировать языки, причем по три или даже четыре! Например, "-l chi-sim+lat+rus" скомбинирует китайский упрощенный (материковый Китай), латиницу и русскую кириллицу. Есть и другие опции, но эти важнее всего. 3) Как только файл готов, открываем его в DjView4, нажимаем F2, выделяем любой фрагмент и по контекстному меню копируем текст в буфер. Что важно, теперь можно в DjVu файле искать (Crtl+F). А можно выделить весь текст, это лучше делать в консоли: djvutxt file.djvu > file.txt Получается текстовый файл со всем текстом из книги.
Зачем нужен, скажем, китайский. Вот у меня есть три странички подорожников из "Iconographia Cormophytorum Sinicorum". Я запускаю ocrodjvu: ocrodjvu --in-place -l chi-sim+lat -j 4 iconogr_cormophytorum_sinicorum_1980_plantago.djvu жду две минуты выделяю китайское описание Plantago asiatica, загружаю его в Google Translate, и получаю среди прочего (без правки): === ... Hairless or pubescent; petiole 5 to 22 cm long. flower Several grasses, erect, 20-45 cm long, short Hairy; spikes occupy 1/3 to 1/2 of upper end, with green White sparse flowers, bracts broadly triangular, rather than calyx lobes Short, both have green broad keel-like protrusions, calyx has Short-handled, lobes obovate-elliptic to elliptic, long 2 to 2.5 mm; corolla lobes lanceolate, 1 mm long Meter. Shade fruit oval, about 3 mm in length, lobed, planted Child 5_6, rare 7-8, oblong, about L5 mm long, Black-brown. ... === (заглавные буквы надо игнорировать, в китайском их нет). Понимаю, что 5-6 (7-8) семян авторы считают для этого вида типичным. Очень полезно.
Спасибо за ценную информацию!
Спасибо! Надо будет попробовать.
Попробовал (по инструкциям Алексея Шипунова) - результаты хорошие, еще раз спасибо. На очереди испытание японскими текстами.
Круто. Распознавать, в том числе для того, чтобы автоматически переводить.
Михаил Серебряный wrote:
На очереди испытание японскими текстами.
Немного оффтопик -- я сейчас в Японии, если что, обращайтесь.
Алексей, спасибо за предложение! Просьбы у меня могут быть исключительно библиографического свойства: до некоторых публикаций японских ботаников в японских же журналах практически невозможно дотянуться (если с автором лично не общаешься). И дело совсем не в языке оригинала.
Попробовал поставить tesseract и посмотреть, как он распознаёт картинки, которые я ранее прогонял через cuneiform. Выполнил команды установки:
sudo apt update sudo apt install tesseract-ocr sudo apt install tesseract-ocr-rus sudo apt install tesseract-ocr-lat
Далее запускаю на картинке, которую сегодня уже скармливал cuneiform: Команда:
tesseract text.png stdout -l rus+eng+lat --oem 1 --psm 3
Результат:
Родство. От родственного вида С’. uralensis Fisch. ex DC. ormmaercs стеблями с волосками и шипами (а не железисто-волосистыми), листоч- ками с отогнутой (а не прямой) верхушкой, компактными (а не рыхлы- ми) кистями, которые вместе с цветоносом в 1.5 раза короче ( а не длин- нее) листьев, цветками 18—20 (а не 12-14) мм дл, чашечкой 10-12 (ане 6-8) мм дл., бордовой (а не зеленой) сверху, бобами 3—6 (а не 1-4)- семянными, улитковидными (а не серповидными), сильно поперечно- извилистыми (а не плоскими), сохраняющимися (а не частично опа- дающими), собранными в длинный цилиндр (а не пучок), который вме- сте с цветоносом почти равен (а не длиннее) длине листьев. Распространение. Казахстан (Тарбагатай, Джунгарский Алатау), Киргизия ( Тянь-Шань), Россия (Тува) и Китай (Джунгария, Кашга- рия).
На мой взгляд - неплохо. Только русское слово после латыни посчитало за латынь :) Надо поискать, как убрать переносы (а может кто знает?). Буду пользоваться. Для сравнения результат распознавания cuneiform:
Родство. От родственного вида С. uralensis Fisch ex DC. отличается стеблями с волосками и шипами (а не железисто-волосистыми), листочками с отогнутой (а не прямой) верхушкой, компактными (а не рыхлыми) кистями, которые вместе с цветоносом в 1.5 раза короче ( а не длиннее) листьев, цветками 18 — 20 (а не 12 — 14) мм дл, чашечкой 10 — 12 (а не 6 — 8) мм дл., бордовой (а не зеленой) сверху, бобами 3 — 6 (а не 1-4)- семянными, улитковидными (а не серповидными), сильно поперечноизвилистыми (а не плоскими), сохраняющимися (а не частично опадающими), собранными в длинный цилиндр (а не пучок), который вместе с цветоносом почти равен (а не длиннее) длине листьев. Распространение. Казахстан (Тарбагатай, Джунгарский Алатау), Киргизия ( Тянь-Шаль), Россия (Тува) и Китай (Джунгария, Кашгария).
> Надо поискать, как убрать переносы (а может кто знает?). Можно так: tesseract text.png stdout -l rus+lat | perl -0 -pe 's/(\S+)-\s+(\S+)/$1$2/g' Кстати, изображение 200 dpi, тогда как для распознавания лучше 300 dpi. Интересно, что cuneiform лучше справился. И быстрее он раз в пять чем tesseract. Так что у него по-прежнему много плюсов.
Надо сказать, что тут картинка неплохого качества. При случае попробую на худших образцах.
Search
Top.Mail.Ru Feedback To the top
www.plantarium.ru