|
Дмитрий Орешкин | Недавно перешёл с 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) семян авторы считают для этого вида типичным. Очень полезно. | Михаил Серебряный | Спасибо за ценную информацию! | Дмитрий Орешкин | Спасибо! Надо будет попробовать. | Михаил Серебряный | Попробовал (по инструкциям Алексея Шипунова) - результаты хорошие, еще раз спасибо. На очереди испытание японскими текстами. | Юрий Постников | Круто.
Распознавать, в том числе для того, чтобы автоматически переводить. | Алексей Шипунов | Михаил Серебряный пишет:На очереди испытание японскими текстами.
Немного оффтопик -- я сейчас в Японии, если что, обращайтесь. | Михаил Серебряный | Алексей, спасибо за предложение! Просьбы у меня могут быть исключительно библиографического свойства: до некоторых публикаций японских ботаников в японских же журналах практически невозможно дотянуться (если с автором лично не общаешься). И дело совсем не в языке оригинала. | Дмитрий Орешкин | Попробовал поставить 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. Так что у него по-прежнему много плюсов. | Дмитрий Орешкин | Надо сказать, что тут картинка неплохого качества. При случае попробую на худших образцах. |
|