Страница 1 из 1

[Решено] djvubind на python3: включение русского модуля OCR ?

Добавлено: 05 июн 2016, 19:21
Delles
В новособранной программе djvubind (представляющей собой скрипт питона3, который делает djvu из картинок, с хорошим сжатием без видимых потерь качества картинки; предусмотрено также OCR), по умолчанию производится распознавание латиницы, а как включается русский модуль tesseract, отвечающей за распознавание, непонятно. Например, фраза «на стыке транзитных путей» распознается следующим образом: «Ha CTbIRe TpaH3nTHBIx nyTefi». М.б. знатоки питона3 подскажут, как включается русский модуль?

Re: djvubind на python3: включение русского модуля OCR ?

Добавлено: 05 июн 2016, 21:08
awl
В файле ~/.config/djvubind/config необходимо дополнить строку №19 необходимой опцией:

Код: Выделить всё

[…]
tesseract_options = -l rus
[…]
У меня тестовые tif-файлы с русским текстом хорошо распознались, сгенерировались вспомогательные файлы с распознанным текстом (*.txt), но djvu-файл не захотел создаваться. Программа завершилась с ошибкой:

Код: Выделить всё

$ 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

Re: djvubind на python3: включение русского модуля OCR ?

Добавлено: 05 июн 2016, 21:35
awl
Обнаружил свою ошибку.
Тестовые 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.

Re: djvubind на python3: включение русского модуля OCR ?

Добавлено: 05 июн 2016, 21:36
notauser
Можно еще как-то так попробовать, ну что бы config не трогать

Код: Выделить всё

djvubind --tesseract-options="-l rus" 
http://manpages.org/djvubind

Re: djvubind на python3: включение русского модуля OCR ?

Добавлено: 05 июн 2016, 21:46
awl
А почему его нельзя трогать? Он же находится в домашней директории ~/.config/djvubind/

Re: djvubind на python3: включение русского модуля OCR ?

Добавлено: 05 июн 2016, 21:50
notauser
Почему нельзя? Можно. Просто не всегда удобно. Вдруг понадобится другой язык. Или два.

Re: djvubind на python3: включение русского модуля OCR ?

Добавлено: 05 июн 2016, 22:53
Delles
Большое спасибо! Всё работает безупречно.