Главное > Программирование

CuneiForm для DjVu

(1/583) > >>

monday2000:
Я сумел скомпилировать под Windows CuneiForm-Linux v1.0.0 http://launchpad.net/cuneiform-linux

Посредством компилятора MS VC++ 6.0. Всё делал по инструкции: скачал и установил инсталлятор СMake, сгенерировал им dsp-файлы для MS VC++ 6.0, потом скомпилировал.

Скомпилировался консольный файл плюс dll-файлы для него. Добавил туда также готовые dat-словари из линуксового дистрибутива. Кстати, эти словари - как раз та вещь, которая не даёт CuneiForm'у считаться по-настоящему программой с открытыми исходниками - никто пока не знает ни внутреннюю структуру этих словарей, ни как сделать новый словарь (скажем, для какого-нибудь нового языка). Жаль.  >:( То есть, новый язык распознавания в CuneiForm не добавишь.  :(

Вот что получилось:

http://djvu-soft0001.nxt.ru/cuneiform_hocr_v1_0_0.rar (23,3 МБ)

Зеркало:
http://ifolder.ru/20085782

Я продублировал это сообщение на форуме OpenOCR: http://openocr.org/forum/viewtopic.php?f=2&t=3175 .

Программа поддерживает только BMP на входе. Это потому, что я пока не стал компилировать исходники вместе с ImageMagick++ (тогда была бы поддержка всех форматов). Просто ImageMagick++ может не скомпилироваться в MS VC++ 6.0 (почти наверняка).

Всё остальное в полученной программе - как у Линукс-версии. Попутно я нашёл 3 бага и одну проблему - но смог из них выкрутиться:

Bug #669844 in Cuneiform for Linux: “Start folder cuneiform.dll not found - VC6 build”

Bug #669908 in Cuneiform for Linux: “Bug found (Bool vs Bool 32)”

Bug #669880 in Cuneiform for Linux: “_stdMallocCounter == _stdFreeCounter”

Качайте, пробуйте. Не исключено даже, что всё это будет работать даже под Windows 98 (!) :o

В пакете есть готовый пример - BMP-файл. Запускаете прилагаемый bat-файл - и через секунду генерируется файл-результат распознавания - в формате hOCR.

Всё это я затеял ради генерации hOCR-файла. Дело в том, что официальные Windows-версии CuneiForm не поддерживают вывод hOCR-файлов - ни одна! >:( Поддержку hOCR создали и прикрутили уже в Linux-версии.

hOCR - это формат распознанного OCR-слоя от OCRopus: http://code.google.com/p/hocr-tools/

--- Цитировать ---hOCR is a format for representing OCR output, including layout information, character confidences, bounding boxes, and style information. It embeds this information invisibly in standard HTML. By building on standard HTML, it automatically inherits well-defined support for most scripts, languages, and common layout options. Furthermore, unlike previous OCR formats, the recognized text and OCR-related information co-exist in the same file and survives editing and manipulation. hOCR markup is independent of the presentation.
--- Конец цитаты ---

Вот спецификация hOCR: http://docs.google.com/View?docid=dfxcv4vc_67g844kf

Вообще, сейчас, как я понял, развивается бурными темпами Linux-порт CuneiForm'а. Официальные релизы заглохли намертво, никакой активности там не наблюдается. Жаль. :-\ Спасибо хоть линуксоидам, что хоть как-то развивают программу.

Вот интересные ссылки по теме CuneiForm:

LXF118:Компьютер слушает http://tinyurl.com/37dspzr
Статья проводит сравнение открытых OCR-продуктов Tesseract и CuneiForm.

Новости CuneiForm-Linux
http://www.linux.org.ru/view-news.jsp?tag=cuneiform

Распознавание текста в Linux при помощи CuneiForm
http://www.kv.by/index2009091108.htm

monday2000:
Синтаксис командной строки этого CuneiForm:


--- Цитировать ---Syntax:

cuneiform [-l language -o result_file -f [outputformat] extra_options ] <image_file>

Optional arguments are the following.

--dotmatrix uses a recognition mode optimised for text printed with a
dot matrix printer.

--fax uses a recognition mode optimised for text that has been faxed.

--singlecolumn disables page layout analysis and assumes that your
image consists of only one column of text.

If you do not define an output file with the -o switch, Cuneiform
writes the result to a file "cuneiform-out.[format]". The file extension
depends on your output format.

By default Cuneiform recognizes English text. To change the language use the
command line switch -l followed by your language string. To get a list of
supported languages type "cuneiform -l".

By default Cuneiform outputs plain text. There are several other output formats.
To get a list run the command "cuneiform -f".
--- Конец цитаты ---

Перевод:


--- Цитировать ---Синтаксис:

cuneiform [-l language -o result_file -f [outputformat] extra_options ] <image_file>

Дополнительные аргументы:

--dotmatrix использует режим распознавания, оптимизированный для текста, напечатанного на матричном принтере.

--fax использует режим распознавания, оптимизированный для текста, присланного по факсу.

--singlecolumn отключает режим анализа структуры страницы и предполагает, что Ваша страница состоит только из одной колонки текста.

Если Вы не определите выводной файл ключом -o, Cuneiform записывает результат в файл "cuneiform-out.[format]". Расширение файла зависит от Вашего формата выводного файла.

По умолчанию Cuneiform распознаёт английский текст. Чтобы изменить язык, используйте ключ командной строки -l, сопровождаемый названием языка. Чтобы получить список поддерживаемых языков, введите команду "cuneiform -l".

По умолчанию Cuneiform выводит простой текст. Имеется несколько выводных форматов. Чтобы получить список, введите команду "cuneiform -f".
--- Конец цитаты ---

monday2000:
Теперь остаётся ещё проблема как записать в DjVu результаты распознавания из hOCR-файла.

Этим вопросом занимается Jakub Wilk. У него есть утилиты hocr2djvu, hocr2djvused - как раз для этой цели. Вот его страница с этими утилитами:

http://jwilk.net/software/ocrodjvu

Проблема, однако, в том, что это чисто линуксовые утилиты. Как суметь использовать их под Windows - я пока не знаю. Написал вчера письмо Якубу, вот его ответ:


--- Цитировать --->How to compile your hocr2djvused in Windows? As a console utility.
You don't. hocr2djvu is a pure-Python program.

I no longer have access to a Windows machine. So, unless somebody
donates me a Windows license, I'm afraid you're on your own.

On the other hand I played around with Wine[0], and manager to run
hocr2djvused under it. So here is the recipe:

1. Install these:
http://sourceforge.net/projects/djvu/files/DjVuLibre_Windows/3.5.23%2B4.6/DjVuLibre%2BDjView-3.5.23b%2B4.6-Setup.exe/download
http://www.python.org/ftp/python/2.6/python-2.6.msi
http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11.win32-py2.6.exe
http://pypi.python.org/packages/2.6/l/lxml/lxml-2.2.8.win32-py2.6.exe#md5=18a7e134fc6eeda498068ece7f1656ef
http://pypi.python.org/packages/2.6/p/python-djvulibre/python-djvulibre-0.1.14.win32-py2.6.exe

2. Run:
C:\Python26\Scripts\easy_install argparse

3. Download and unpack ocrodjvu 0.7.0. Well, technically it hasn't been
released yet, but you can download code from the repository here:
http://bitbucket.org/jwilk/ocrodjvu/get/tip.zip
Then, in the unpacked directory, run:
C:\Python26\python setup.py install

4. Now you should have hocr2djvused.exe in your C:\Python26\Scripts
directory.  Note that it needs libdjvulibre.dll and libjpeg.dll (both
from DjVuLibre installation) to run.

[0] http://www.winehq.org/

--
Jakub Wilk
--- Конец цитаты ---
То есть Якуб сказал, что это чисто Питоновое приложение. Поэтому его на Windows не перенесёшь. Сам я думаю ещё глянуть в сторону Cygwin - там наверняка есть Python.

Хорошо хоть, что распознавание DjVu и запись в него OCR не требуют графического интерфейса от CuneiForm.

В общем, сейчас главное суметь получить hocr2djvused в виде вменяемого консольного Windows-приложения. Может, у кого-нибудь будут идеи, как это сделать?

monday2000:
Пока что у меня возникло такое мнение, что вариант hocr2djvused от Jakub чересчур навороченный. Требует инсталляции Питона и кучи непонятных "довесков".

Потом скрипт требует компиляции в Питоне и под Питон? Так ли я понял идею?

В общем, подозреваю, что вся эта многоэтажная конструкция будет глючить по-чёрному. И будет на практике машинно-зависимой. Такое решение не назовёшь серьёзным и стабильным.

Сама собой возникает мысль о необходимости и желательности создания с нуля простого и надёжного hocr2djvused конвертера. Его можно сделать на базе любого XML-парсера. И будет это просто в виде обычного exe-файла - без всяких там ненужных наворотов (в данном случае) вроде Питона.

Кто и когда это будет делать, пока неясно.

monday2000:
Кстати, первым делом обнаружился один неприятный момент:

формат hOCR - это вообще-то HTML-формат. И работать с ним напрямую нельзя - его нужно сначала преобразовать в XML.

В спецификации hOCR указывается на программу http://tidy.sourceforge.net/ , которая умеет автоматически переконвертировать HTML в XHTML.

Вот спрашивается: почему бы сразу не делать XML? Зачем для hOCR избрали HTML? Просто ерунда какая-то.

Как пользоваться этим tidy, я пока не понял. Сделать им конверсию HTML в XML я пока не смог.  :(

Вот образец hOCR-файла: http://www.onlinedisk.ru/file/545119/ Может, кто-нибудь сможет сконвертировать его в XML при помощи http://tidy.sourceforge.net/ ? Там на сайте http://tidy.sourceforge.net/ есть готовое виндовое консольное приложение - надо только разобраться в его использовании.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии