Вернуться к разделу "Программа DjvuOCR".


Программа DjvuOCR v2.2 beta. Краткое руководство для пользователя


DjvuOCR 2.2 бета

Программа для создания DJVU-книг с вложенным текстовым слоем и поиском
на основе извлечения информации из рабочих файлов FineReader 7.0/8.0

Краткое руководство для пользователя


Рабочее название программы: DjvuOCR.exe

Версия: 2.2 бета (предыдущая: 2.1)

Подобная программа: FRFGrab 1.12, console application.

Автор: gencho

Платформа: Windows 9x/ME/NT/2000/XP, Dialog-based API

Обратная связь: djvuocr [почтознак] mail2world.com

Версия FineReader для тестирования:

- FineReader 7.0 PE Build 7.0.0.543 part# 3648

- FineReader 8.0 PE Build 8.0.0.684 part# 4571

ВНИМАНИЕ: Продукт не содержит самого FineReader-a. Пользователь должен установить собственный FineReader, хотя бы версию try&buy.

См. в конце текста: Как работать с FineReader в пакетном режиме.


ГОРЯЧИЕ НОВОСТИ:


Така как версия еще тестируется, просьба сообщать о встреченных ошибок. Новое мыло указано выше.

Доработки и замечания:

- уже можно редактировать тексть после распознавания в FineReader!
Добавлен алгоритм востановления вероятних позициях редактированних символов. Для коректной работы алгоритма надо:

а) при редактирование сохранять некоторые символы оригиналного текста (например интервалы), т.е. не сносить большие блоки и писать их снова;

б) желательно сохранять количество строк в параграфе (т.е. не стирать знаки конца строки);

Можно работать и без ети правила, тогда алгоритм будеть угадывать позиция символов через интерполяция с помощью близких строк, но тогда будут видны некоторые несоответствия при маркировке текста на екране (что в общем несуществено).

- Устранен проблемм с папки и имена файлов с кирилскими буквами.

- Коректно обрабатываются таблицы, клетки которых содержат pictures.

- Скоректирован перенос слов если выбрана опциа "Normal hyphenation". До етого терялось первое полуслово.

- замечен проблем програмы DJVUSED.EXE. Когда через нее получается количество страниц в DJVU-файл (команда djvused -e n filename.djvu) то при одностраничних файлов остается один рабочий файл в корень диска, где находится програма djvused.exe.

- замечен баг, при обработка объекта, распознанного как bar-code. Моя программа не обрабатывает такие объекти. Чтобы запретит FineReader-а тоже их распознавать, надо в меню Tools/Options/General/Legacy options/ убрать опция Look for barcodes. Потом надо сохранит опции как default.

Изменения в документе:

- Известные проблемы

- История проекта



Основные режимы работы:

- "DjVu Decoder"
- "Batch mode OCR manager"
- "Manual mode OCR manager"
- "Burn existing OCR file in DjVu book"
- "Extract OCR layers"
- "Remove OCR layers"

Режим выбирается нажатием соответствующей кнопки.

Все опции программы, выбранные пользователем во время работы, запоминаются автоматически в файл FRFGrab.ini.

Я поставил их как мне удобно, для большинства случаев жизни.


"DjVu Decoder"

DjVu Decoder дает возможность декодирования DJVU книги в стандартные графические форматы, такие, как TIF, BMP и др.

DJVU-книги, которые надо декодировать, следует добавить в "DjVu File list" с помощью кнопки "Add". Книги должны быть все в одной директории (папке)!

Потом задаются опции для конвертирования ("Options for each file").

Есть два способа задания опций:

1) для всех книг. Нужные опции выбираются, и потом нажимается "Apply to all files";

2) для конкретной книги. Обычно после 1), книга выбирается мышью, и тогда меняются ее опции. Все выбранные опции используются для новых добавляемых через "Add" файлов.

"Save as default" запоминает параметры как подразумевающиеся по умолчанию.

"Name output convention" задает метод наименования выходных файлов. Например, тиффы для книги #1 нумерируются как aa_0001.tif, aa_0002.tif..., для книги #2 как ab_0001.tif, ab_0002.tif и т.д.

"Output directory" указывает выходную папку, где будут создаваться файлы. Папка должна существовать до начала обработки!

Если все в порядке, можно нажимать "Process". Книги одна за другой начинают декодироватся, процесс не очень быстрый, так как для каждой страницы запускается Djvused.exe.


ВОЗМОЖНАЯ ПРОБЛЕМА при работе DjvuDecode:

Под WinXP наблюдается иногда (очень редко) прекращение работы, программа стоит и ничего не делает, количество обработанных стрниц не меняется. Похоже, что это баг в DjvuDecode.exe. Опыт показывает, что DjvuDecode на самом деле создаёт соответствующую страницу (как файл TIF), но почему-то не заканчивает свою работу.

(примечание: есть очень похожая проблема с программой ddjvu под Linux! Причём эта проблема обостряется, если компьютер сильно загружен. Однако проблема решается, если перекомпилировать ddjvu с опцией --disable-threads.)

С этим можно боротся так: запоминаем имя последнего графического файла, созданного в "Output directory". Потом запускаем Task Manager, и убиваем процесс DjvuDecoder (не DjvuOCR!!!). Программа тогда продолжает работать. Потом, в конце, надо подправить получающийся ПРОЕКТ-файл. Об этом ниже, в разделе "структура ПРОЕКТ-файла".


Если в книге есть пустые страницы, или поврежденные страницы, программа DjvuOCR их пропускает, но отмечает в список, который можно посмотреть в конце процесса.

После завершения процесса появляется сообщение "Save project file?" и возможность записать всю информацию о декодированных книгах в файл.

Этот файл и есть ПРОЕКТ-файл, который очень удобен для последующего внедрения ОCR-текста через меню "Batch mode OCR manager". ПРОЕКТ-файл можно сохранить и нажатием кнопки "Save as OCR project".

Этим декодировка завершена.

Для загрузки результата декодировки есть два метода:

1) Если надо загрузить результат (тиффы) в FineReader, я поступаю так.

СОВЕТ: один проект для FineReader не должен превышать 3800-4000 файлов, так как в противном случае распознавание замедляется.

СОВЕТ: У FineReader 8 есть опция "Fast recognition" в Tools/Options/2.Read/Fast меню. Ее мoжно использовать когда изображения отсканированы хорошо, без лишней грязи. Тогда скорость распознавания можно существенно увеличить. На компьютере AMD 2000 она достигает 30-60 стр/мин.

2) (версия 2.1 и выше)

Добавлены кнопки "Create FR7 batch" и "Create FR8 batch".

Нажатием одной из этих кнопок содержимое "Output directory" преобразуется прямо в проект соответствующего Файнридера. Кнопку надо нажимать после заполнения папки: изображения сортируются в алфавитном порядке, переименуются как 0001.tif, 0002.tif, и т.д. и добавляются дополнительные рабочие файлы Файнридера. После загрузки такого проекта в Файнридер появляется сообщение "... _FRBatch.pac was not found", а потом Файнридер сам создает этот файл. Надо указать языки распознавания, и после этого можно запускать обработку. FineReader 8 может обрабатывать batch-файлы, созданные обоими кнопками.

Есть подозрение, что этот метод решает проблему самопроизвольного поворачивания страницы Файнридером в процессе загрузки.

ЗАМЕЧАНИЕ: эта возможность все еще экспериментальная. Она работает хорошо для черно-белых изображений, но мало тестировалась на полутоновых (серых) изображениях. Если возникнет проблема при таком создании пакета, можно сделать пакет как указано выше (пункт 1), используя те же самые графические файлы - они не изменяются при нажатии кнопок "Create FR7/8 batch", только переименуются.

ЗАМЕЧАНИЕ2: Для создания FR-пакета таким образом, графические файлы не должны содержать имена типа 0001.tif, 0002.tif и т.д., - такие имена будут после переименования. Если такие имена есть, выдается сообщение об ошибке.


Структура ПРОЕКТ-файла:

Это текстовый файл с расширением ".dprj". Он начинается с "DECODER_PROJECT"

Потом для каждого файла следует группа комманд, например:

file=H:\_@djvu9\bee\Greiner W. Classical mechanics. Systems of particles and hamiltonian dynamics (Springer, 2003)(K)(400dpi)(T)(563s).djvu
lastpage=563
misspages=12,18,24,62,102,104,186,292,360,362,533,535,557
prefix=aa_
processed=550

- lastpage:    номер последней страницы в djvu-файле.

- misspages: список пустых (или поврежденных) страниц. Соответствующих TIFF файлов нет, но их надо
                      учитывать для правильности нумерации страниц. Если нет таких страниц, то эта команда пропускается;

- prefix:        префикс для именования файлов, например префикс aa_ соответствует файлам aa_0001.tif ...

- processed: сколько страниц будет обработано. Это число равно (lastpage - misspages)

Наконец, если надо исправить проблема, которая описана выше (под WinXP, незавершение выполнения DjvuDecoder), то надо сделать так:


СОВЕТ: Если декодирование проводится только с целью распознавания текста, то очень часто хорошие результаты получаются декодированием книги в режиме черно-белая графика (объем файлов намного меньше);

СОВЕТ: если книги сканирована в color или gray, их можно декодировать для OCR как черно-белая не только с помощью опции "To bitonal", но также и выбором "Layer"=mask одновременно с "To bitonal". Это помогает (иногда) уменьшить ненужный цветной фон.


"Batch mode OCR manager"

Здесь проводится обработка FR проекта и внедрение OCR-текста в книги.

1) Книги можно указывать двумя способами:

- через загрузку ПРОЕКТ-файла, созданного в "DjVu Decoder";

- через добавление книг с "Add". Тогда надо вручную выбирать файлы мышью, и (возможно) заполнять поле "Missing page list" со списком страниц, для которых нет графического файла в проекте FineReader; Страницы в списке разделяются запятой ',' .

"Scale": для каждой книги, эти две поля используются, только если тиффы декодированны в другом разрешении, например из книги в 150dpi сделаны тиффы в 600dpi. Последнее необходимо, когда книга сканирована в плохом качестве, и надо повысить качество распознавания. Тогда в поля "Scale" надо указать соотношение между оригинальном и декодированно dpi, например в случае 4/1.

Подбором етих чисел можно настроит чтобы OCR лег прямо на тексте. Для етого можно выбрать в случае 402/100, чтобы компенсировать ошибки округления (особено при малых оригинальных dpi).

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

2) В графе "FineReader Project Directory" надо указать, где находится папка с проектом для FineReader. Эта папка должна содержать некоторое количество рабочих файлов FR (эти файлы имеют расширение FRF). Сразу надо проверить, распознает ли программа DjvuOCR формат Finereader-a, через кнопку "Test project". Если есть проблемы, получаете список проблематичных страниц, их надо редактировать в FineReader. См. ниже раздел "Работа с FR в пакетном режиме/Известные проблемы", там описаны некоторые часто встречающиеся проблемы и их решения. Повторяете "Test" до отстранение всех ошибок.

3) Надо указать, где будут создаватся выходные файлы в "Output OCR text Directory"; В версия 2.1 добавлен checkbox "Save produced OCR layers as TXT files". Если вам после обработки текстовые OCR-файлы не нужны, то уберите маркировка на checkbox. Тогда рабочие файлы будут создаватся в папке TEMP, и будут убиратся после внедрения OCR.

4) Надо подобрать параметры ("Options"):

- "Normal hyphenation": включает "нормальный" перенос, например:

"эта функция интегри-"
"руема на отрезке..."

при этом в книге при поиске слово "интегрируема" не находится, но находится кусок "руема".

Если не включать эту опцию, то такой перенос обрабатывается так (версия 2.1):

"эта функция "
"интегрируема на отрезке..."

Для поиска, и в OCR-текста дума с переносом будеть целая, как в последнем случае, а лишная часть будет удалена. В графическое изображение ничего не меняется.

- "Ignore error checking":  если в страницах есть ошибки при "Test project", но их надо игнорировать; Тогда из
                                        страниц будет взято все, что можно найти этих в страницах как текст.

- "Direct UTF8 translation":  Включается прямая перекодировка из FineReader UNICODE в UTF8.

Эта опция позволяет обрабатывать языки распознавания, отличные от указанных в Regional Settings компьютера. Лучше всегда ставить галочку в эту опцию.

- "Create HTML file":  если нам надо перекодировать распознанный текст в HTML (UTF8).

- "Burn DJVU books":  если это выбрано, то результат обработки (OCR-Layer) внедряется в соответствующую DJVU-книгу. А если не выбрано, то только создается OCR-файл с распознанным текстом, готовым к внедрению.

"Start page# in FineReader project": начальная страница FR-проекта, с которой надо начинать обработку.

Кнопка "Process": начинает обработку. Для каждой книги должно появится окно, которое показывает ход обработки.

СОВЕТ: После обработки надо каждую книгу загрузить и посмотреть, все ли в начале и в конце правильно, т.е. соответствует ли маркирование текста положению самого текста. То есть, надо сделать поиск на какое-нибудь слово и убедиться, что это слово действительно можно найти на правильном месте. Загрузка большого числа файлов в FR чревата сбоем, и может происходит ошибка, которая рассинхронизирует FR проект и последовательность страниц в книге.


"Manual mode OCR manager"

Этот режим создавался для более гибкой обработки. Здесь можно обработать часть FineReader-проекта. Правда, этот режим мало использовался, слабо тестирован, и здесь могут быть серьезные баги. Рекомендую пользоваться только "Batch mode OCR manager".

"FineReaded Project directory": папка, где находится FR проект.

"Output OCR text file": папка, где создается OCR-layer файл.

"Page interval in FR project": здесь можно указать, какая часть FR проекта будет обработана.

"Start page# in DJVU book": указывает начальную страницу в DJVU-файл, где OCR должен размещатся.

"Burn DJVU book": если выбрать, то OCR текст внедряется прямо в DJVU-файл.

"Djvu File": DJVU-файл, в которой надо внедрить OCR, если указано "Burn..."

Все опции те же, как и у "Batch mode OCR Manager".

исключение: опция "Direct UTF8 translation" всегда выбрана.


"Burn existing OCR file in DjVu book"

Здесь все просто. Надо указать путь к DJVU книге, путь к существующему OCR-текст файлу, и нажать на Process.

ЗАМЕЧАНИЕ: если OCR файл получен прямо из Djvused.exe, а не из DjvuOCR, то возможно получится ошибка, так как Djvused именует страницы, и потом не находит страниц с таким же именем в другом файле. (В пакете all2djvu имеется python-script под названием djvuOCR-extract.py, который решает эту проблему.)

Коректнее использовать OCR-текст полученный в следующего режима, "Extract OCR layers".


"Extract OCR layers"

Дает возможность извлечения OCR-текста из DJVU-книги в корректном для Djvused формате.

"Djvu File List" - Можно выбрать много DJVU-книг (через кнопка "Add"), притом из разных папок; можно добавлять целые папки (и их подпапки, через кнопку "Add folder").

"Output Directory" - место, где будут сохранятся извлеченные OCR-слои книг. Процес извлечения оптимизирован таким образом, что пустые страницы и поврежденные страницы игнорируются, и результат польностью совместим с Djvused для дальнейшего использования, в частности для последующего внедрения в другие DJVU-файлы.

Обработка начинается после нажатия кнопки "Process", и идет сравнительно медленно.


"Remove OCR Layer"

Удаляет OCR-текст из DJVU-книги.

"Djvu File List" - сиисок книг для обработки, можно добавлять отдельные книги из разных папок (кнопка "Add") или и целые папки книг (и их подпапки, через кнопка "Add folder").

Есть возможность убирать только часть OCR-текста, через поля "Remove from page"..."to page".

Обработка начинается после нажатия кнопки "Process".


Работа с FineReader в пакетном режиме:


1) Запускаем FineReader;

2) В меню "File/New batch" делаем новый проект. Задаем языки распознавания;

3) В меню "File/Save batch" (FineReader 7.0/8.0) задаём имя проекта (name of the batch). После распознавания, в соответствующей директории появятся все рабочие файлы FineReadera (*.FRF);

4) В меню "File/Open" добавляем страницы к проекту. Можно добавить за один раз несколько страниц или же все страницы (не более 1167 за один раз!). Нужно следить, чтобы изображения следовали в порядке возрастания номеров страниц;

5) Отмечаем все страницы и нажимаем "Read", начинается распознавание; То же можно сделать и с кнопка "Read All";

6) Ждем :)). Для Pentum IV/1600, 250 страниц обрабатываются за ~20-40 min., на Athlon/1000 - ~35-50 min. Математические страницы распознаются примерно в два раза медленнее, чем чисто текстовые. Встречаются, однако, сканы, в которых 200 стр. разпознаются за 10 мин.

7) Обязательно нажимаем пункт меню "File/Close batch", иначе не все файлы правильно записываются на диск. А именно, если некоторая страница помечена в окне thumbnails, то она не будет записана на диск. Тогда можно пометить другую страницу и тогда первая будет записана.

8) Запускаем FRFgrab или DjvuOCR.


ВНИМАНИЕ! Вполне достаточно использовать try&buy или demo версию FineReadera, даже если у нее прошел срок бесплатной работы. Ведь нам не нужно сохранять распознанный текст в каких-либо форматах. А для распознавания try&buy и demo всегда работают и создают нормальные FRF-файлы.


Известные проблемы:


Так как формат FRF недокументирован (нужно иметь FineReader SDK, который мне не по карману), формат был угадан.

1) Вроде бы внутри FRF файлов есть информация о их версии. Программа работает с версией формата 2.10 (FineReader 7.x) и 2.15 (FineReader 8.0). Остальные версии не поддерживаются.

2) если страница отсканирована под углом, FineReader пытается ее немного повернуть, и потом на экране координати маркированного текста не совпадают с изображением. Это не лечится. Надо страницы выпрямлять до распознавания, примерно ScanKromsator-ом.

3) FineReader иногда не распознает страницу совсем, а маркирует ее как "ошибку" (с красной иконкой). Для таких страниц, надо делать так: мышью маркируем часть текста (исключаем формулы и графики), и нажимаем Read (распознавание только на этой странице). Если все ОК, маркируем следующий блок, и повторяем. Если нет, то смотрим строку, где FR остановился, и либо исключаем её из маркированного блока, либо исключаем какие-либо особые символы, которые там есть. FineReader 8 сравнительно реже останавливается на таких ошибок.

4) FineReader не распознает страницы, на которых есть изображение в виде сетки, или большая графика в логарифмическом масштабе. Он воспринимает ее как таблицу с многими клетками, и часто вылетает с General Protection Failure. Такие страницы надо распознавать, предварительно мышью выделив только текст. В FineReader 8 это исправлено.

5) Если встречаются страницы, которые нормально распознаны, но не проходят теста, это обычно происходит из-за таких проблем:

- большое количество блоков на странице. Тогда надо мышью маркировать их с "Text Frame" все как один большой блок, и распознавать снова;

- или встретился очень длинный абзац. Например, список на всю страницу. Тогда надо вручную сделать два блока, порезав страницу посередине.

Вроде исправил эту ошибку.

6) Замечен проблем програмы DJVUSED.EXE. Когда через нее получается количество страниц в DJVU-файл (команда djvused -e n filename.djvu) то при одностраничних файлов остается один рабочий файл в корень диска, где находится програма djvused.exe. Етот проблем наблюдается при загрузке DJVU_файла в Список Файлов (режим batch Mode Processing) через кнопка Add.

7) Замечен баг, при обработка объекта, распознанного как bar-code. Моя программа не обрабатывает такие объекти. Чтобы запретит FineReader-а тоже их распознавать, надо в меню Tools/Options/General/Legacy options/ убрать опция Look for barcodes. Потом надо сохранит опции как default.


История проекта:


07.01.2007 - версия 2.2 бета, консольная версия FRFGrab 1.12
  • уже можно редактировать тексть после распознавания в FineReader!
  • Добавлен алгоритм востановления вероятних позиции редактированних символов.
    Для коректной работы алгоритма надо:

    а) при редактирование сохранять некоторые символы оригиналного текста (например интервалы), т.е. не сносить большие блоки и писать их снова;
    б) желательно сохранять количество строк в параграфе (т.е. не стирать знаки конца строки);

    Можно работать и без ети правила, тогда алгоритм будеть угадывать позиции символов через интерполяция с помощью близких строк, но тогда будут видны некоторые несоответствия при маркировке текста (что в общем несуществено).
  • Устранен проблемм с папки и имена файлов с кирилскими буквами.
  • Коректно обрабатываются таблицы, клетки которых содержат pictures.
  • Устранены ошибки с переполнением буфера при ложном сигнале о длинных слов.
  • Скоректирован перенос слов если выбрана опциа "Normal hyphenation". До етого терялось первое полуслово.
30.08.2006 - версия 2.1, консольная версия FRFGrab 1.11
  • Добавлена поддержка FineReader 8.
  • До конца августа устранены существенные ошибки, связанные с наличием цветных изображении в распознаваемой странице.
  • Окончательно решена проблема с переносом слов.
  • В DjvuOCR добавлены "Extract..." и "Remove OCR Layers".
  • Добавлены новые возможности в режим "Djvu Decoder" и "Batch mode Ocr manager"
07.04.2006 - версия 2.0 final.
  • Добавлена UNICODE поддержка языков FineReade-a.
  • Следующая версия будет поддерживать FineReader 8.x
28.06.2004 - версия 2.0 pre
  • Окончено оформление диалогов, автоматизация запуска процессов.
  • Есть нереализованные идеи и отсутствует документация, поэтому - pre-версия
20.06.2004 - версия 1

Практически полная функциональность, перенесена с FRFGrab 1.09

04.06.2004 - версия 0:

начало GUI

22.02.2004 - версия 1.09

на FRFGrab - консольная версия.


07.01.2007, Bulgaria, Sofia.

<gencho>  djvuocr [почтознак] mail2world.com


Подготовил: monday2000.

9 марта 2007 г.

E-Mail  (monday2000 [at] yandex.ru)

Hosted by uCoz