[Решено] djvubind на python3: включение русского модуля OCR ?
[Решено] djvubind на python3: включение русского модуля OCR ?
В новособранной программе djvubind (представляющей собой скрипт питона3, который делает djvu из картинок, с хорошим сжатием без видимых потерь качества картинки; предусмотрено также OCR), по умолчанию производится распознавание латиницы, а как включается русский модуль tesseract, отвечающей за распознавание, непонятно. Например, фраза «на стыке транзитных путей» распознается следующим образом: «Ha CTbIRe TpaH3nTHBIx nyTefi». М.б. знатоки питона3 подскажут, как включается русский модуль?
Последний раз редактировалось Delles 05 июн 2016, 22:53, всего редактировалось 1 раз.
Talk is cheap. Show me the code.
Linus Torvalds
Linus Torvalds
Re: djvubind на python3: включение русского модуля OCR ?
В файле ~/.config/djvubind/config необходимо дополнить строку №19 необходимой опцией:У меня тестовые tif-файлы с русским текстом хорошо распознались, сгенерировались вспомогательные файлы с распознанным текстом (*.txt), но djvu-файл не захотел создаваться. Программа завершилась с ошибкой:
Код: Выделить всё
[…]
tesseract_options = -l rus
[…]
Код: Выделить всё
$ djvubind
* Collecting files to be processed.
Binding a total of 3 file(s).
* Analyzing image information.
Spawning 4 processing threads.
* Performing optical character recognition.
Spawning 4 processing threads.
* Encoding all information to /mnt/DU/tmp/temp/book.djvu.
Traceback (most recent call last):
File "/usr/bin/djvubind", line 446, in <module>
proj.bind()
File "/usr/bin/djvubind", line 171, in bind
self.enc.enc_book(self.book, self.out)
File "/usr/lib/python3.4/site-packages/djvubind/encode.py", line 281, in enc_book
self._csepdjvu(page.path, tempfile, page.dpi)
File "/usr/lib/python3.4/site-packages/djvubind/encode.py", line 137, in _csepdjvu
self._cjb2('temp_textual.tif', 'enc_bitonal_out.djvu', dpi)
File "/usr/lib/python3.4/site-packages/djvubind/encode.py", line 84, in _cjb2
utils.execute(cmd)
File "/usr/lib/python3.4/site-packages/djvubind/utils.py", line 193, in execute
print(utils.color("err: [utils.execute()] Command exited with bad status.", 'red'), file=sys.stderr)
NameError: name 'utils' is not defined
OMNE NIMIUM NOCET
Re: djvubind на python3: включение русского модуля OCR ?
Обнаружил свою ошибку.
Тестовые tiff-файлы оказались 8-битные в градациях серого. После преобразования их в чёрно-белые программа djvubind отработала без ошибок и исправно создала djvu-файл с текстовым слоем.
Тестовые tiff-файлы оказались 8-битные в градациях серого. После преобразования их в чёрно-белые программа djvubind отработала без ошибок и исправно создала djvu-файл с текстовым слоем.
Код: Выделить всё
$ djvubind
* Collecting files to be processed.
Binding a total of 3 file(s).
* Analyzing image information.
Spawning 4 processing threads.
msg: page_0003.tif: Bitonal image but with a depth greater than 1. Modifying image depth.
msg: page_0002.tif: Bitonal image but with a depth greater than 1. Modifying image depth.
msg: page_0001.tif: Bitonal image but with a depth greater than 1. Modifying image depth.
* Performing optical character recognition.
Spawning 4 processing threads.
* Encoding all information to /mnt/DU/tmp/temp/book.djvu.
Последний раз редактировалось awl 05 июн 2016, 21:39, всего редактировалось 1 раз.
OMNE NIMIUM NOCET
Re: djvubind на python3: включение русского модуля OCR ?
Можно еще как-то так попробовать, ну что бы config не трогать
http://manpages.org/djvubind
Код: Выделить всё
djvubind --tesseract-options="-l rus"
Re: djvubind на python3: включение русского модуля OCR ?
А почему его нельзя трогать? Он же находится в домашней директории ~/.config/djvubind/
OMNE NIMIUM NOCET
Re: djvubind на python3: включение русского модуля OCR ?
Почему нельзя? Можно. Просто не всегда удобно. Вдруг понадобится другой язык. Или два.
Re: djvubind на python3: включение русского модуля OCR ?
Большое спасибо! Всё работает безупречно.
Talk is cheap. Show me the code.
Linus Torvalds
Linus Torvalds