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


Утилита FRFGrab из пакета DjvuOCR v2.2 beta


Программа для извлечения информации из рабочих files FineReader-а
и создания файла с OCR информации для DJVU files.

Рабочее название: FRFGrab.exe
Версия: 1.12. В эту версию добавлена поддержка FineReader 8.x.
Автор: gencho
Платформа: Windows 9x/ME/NT/2000/XP, console application
Обратная связь: 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.

Текущее состояние проекта:
05.03.2006 - протестирован на более 4000000 страниц сканов (более 10000 книг) для Finereader 7.0 (100% работает)
07.01.2007 - наработал 90000 страниц для FineReader 8.

ГОРЯЧИЕ НОВОСТИ:
См. начало DjvuOCR-ru.txt.


Описание:


FRFGrab [options] <FRF file> [options]

Options:

-p <n>     -- начальный номер страницы в DjVu файл, начиная с 1
-g             -- автоматическая генерация номера страницы:
                    номер берется из имени файла (0017.FRF -> #17)
-h              -- выключает улучшенный метод переноса слова
                    (см. заметка в "История проекта")
-i               -- игнорировать все страницы, внутри которых при "тесте"
                    возникают ошибки. Делается попытка извлечь из них
                    все, что возможно, до обнаружения ошибки. При этом
                    нумерация страниц в книге сохраняется.

Дополнительные опции (только для исследования формата FRF файлов!)

-v              -- verbose (печатается весь процесс обработки)
-l              -- список форматных групп
-d              -- hex dump (весь файл)
-t               -- проверка, все ли опознано до конца проекта
-q              -- при опции "-t", печатать только сообщения об ошибках.

<FRF file> -- имя рабочего файла (.FRF) или wildcard (с '?', '*'). Если имя начинается с '@', это значит файл со
                       списком имён файлов. Если пользуем wildcard, имена файлов будут отсортированы. Допускается
                       только '*', что эквивалентно '*.frf'

Программа без аргументов печатает этот краткий help.


Пример файла со списком имён:

--- начало файла ----
#comment line #1
;comment line #2

0010.frf
0009.frf
0008.frf
file_page7.frf
0006.frf
0005.frf
file_page.frf
0003.frf
0002.frf
0001.frf
--- конец файла ----


Примеры использования:


FRFGrab -t 0005.FRF

--- проверяет распознается ли формат FRF файла. Печатает ОК или ошибка.

FRFGrab -g 0005.FRF >output.txt

--- извлекает информацию из FRF файла и создает OCR-текст в output.txt. Этот OCR-текст можно добавить в DJVU файл командой:

djvused -f output.txt MyFile.djvu

--- При этом MyFile.djvu будет иметь распознанную страницу #5

FRFGrab -p 8 0005.FRF >output.txt

--- То же самое, только указано что файл на самом деле содержит информацию о странице #8 в DJVU файле.

FRFGrab -v 0005.FRF

--- печатает информацию о всём процессе распознавания FRF-формата.

FRFGrab -p 4 *.frf

--- Обрабатывает все файлы в текущем каталоге. Указано, что в DJVU файле OCR-текст начинается со страницы #4. Результат будет выведен в STDOUT.

FRFGrab -g *.frf

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


Нормальная рабочая сессия:


FRFGrab -t -q *

и если нет ошибок с FRFGrab,

FRFGrab -p 1 * >book.txt

и потом:

djvused -f book.txt book.djvu

Для автоматизации, программу FRFGrab можно использовать в MSDOS .BAT files.

Программа возвращает ERRORLEVEL=0 при нормальной работе и ERRORLEVEL=1 или 2 при сбоях.


Примерная технология работы:


1a) Делаем сканирование;

2a) Делаем DJVU файл с помощью DjVu Solo или DEE; или, если djvu-файл уже существует,

1b) Делаем разбиение существующего DJVU файла на TIF с помощью DJVUDECODE.EXE;

2b) djvu-файл уже существует :)

3) Распознаем сканированние страницы с FineReader-ом в пакетном режиме;

4) Запускаем FRFGrab и извлекаем текст из рабочих FRF-файлов FineReadera;

5) Запускаем DJVUSED.EXE, как указано выше.


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


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

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

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

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

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

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

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

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


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


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


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

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

2) Если после автоматического распознавания FineReader-ом вы что-то редактируете в тексте вручную, то для отредактированного текста теряется информация о координатах на странице (x coordinate = 0). Это, конечно, приводит к неправильным прямоугольникам на экране при поиске в DJVU файле. Не рекомендую что-либо исправлять после распознавания! Проблема не решена.

3) Не обрабатываются (и не будут!) страницы, содержащие таблицы, клетки которых содержат рисунки (pictures). Их надо удалить вручную (изменить параметры соответствующего фрейма, чтобы таких таблиц не было, а чтоб был один текст) и распознать снова данную страницу.

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

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

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

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

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

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


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


07.01.2007 - версия 1.12

Новости см. история в DjvuOCR-ru.txt.

30.08.2006 - версия 1.11
  • Добавлена поддержка для FineReader 8.x
  • Решена окончательно проблема переноса - в copy/paste текст уже не будет лишная часть слова. Работает когда не указана опция -h
05.03.2006 - версия 1.10
  • Добавлена поддержка UNICODE генерируемого в FineReader.
  • теперь возможна корректная обработка страниц, содержащих несколько языков, и необязательно иметь локализованную версию Windows для языков распознавания.
22.02.2004 - версия 1.09
  • Несколько проблем, проявляющихся на страницах, где нет текста, а только изображения.
  • Добавлена новая опция "-i" - если есть страницы с ошибками, игнорировать их извлекая все что можно.
16.02.2004 - версия 1.08

Устранена проблема при отсуствии имени исходника (image name) внутри FRF-файла.

09.02.2004 - версия 1.07

Введена новая опция "-h". Она *выключает* новый метод переноса слов, который я разработал, и который теперь всегда применяется по умолчанию. Идея метода в том, чтобы избежать проблемы при переносе, когда слово разбивается на части и не может быть найдено при поиске, например:

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

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

Новый метод переноса состоится в том, что часть слова снова повторяется в ОCR-тексте, например:

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

и при поиске уже находится целое слово "интегрируется". Это, правда, несколько мешает, если мы делаем copy/paste... Кто не хочет эту фичу, должен использовать опцию "-h".

07.02.2004 - версия 1.06
  • Несколько ошибок, мешающих распознаванию pictures in text.
  • Oсновательно протестирован на 131 книг (более чем 37900 страниц).
31.01.2004 - версия 1.05
  • Устранена новая ошибка, мешающая поиску в браузере - неправильные координаты слова, приходившие с FineReadera.
  • Oсновательно протестирован на 79 книг (более чем 22300 страниц).
26.01.2004 - версия 1.04

Устранена очень серьезная ошибка - line с координатами {0,0,0,0}Это приводило к сообщениям об ошибке для некоторых страниц при поиске в браузере.

25.01.2004 - версия 1.03
  • основательно протестирован на 35 книг (более чем 12000 страниц).
  • Решена проблема с pictures в текстовом блоке.
  • Решена проблема с большими таблицами.
19.01.2004 -
  • сделал 4 книги с OCR без единой проблемы с FRFrab.EXE!
  • Первая Release версия 1.0.
18.01.2004 - версия 0.3
  • Обрабатывает страницы, содержащие tаbles & pictures. 100% FineReader 7.x, 100% FineReader 5.x
  • решена проблема со специальными символами при генерировании lisp-текста.
08.01.2004 - версия 0.2

100% обрабатывает все страницы, в которых нет tables & pictures

05.01.2004 - версия 0.1

Обрабатывает чисто текстовые страницы.

22.12.2003 - идея и начальная реализация.

Заметки:


Если FRFGrab не хочет обработать страницу, нужно посмотреть ее в FineReader-е. Иногда он делает странные таблицы. Если удалить таблицы и маркировать текст с "Text Frame" и распознать снова, часто это решает все проблемы.

Если DjVused.exe не берет больших файлов, надо работать с файлом по частям.

Простая, но необходимая проверка:

djvused -e output-txt MyFile.djv >MyFile.txt

Если в конце MyFile.txt находится сообщение об ошибке, значит что-то сбилось и будет проблема с поиском!
Если информировать меня, я постараюсь устранить проблему.

Всем кто хочет помочь, просьба высылать FRF файлы, которые не обрабатываются FRFGrab-ером на мыло gencho [почтознак] yourwap.com с предварительного уведомления. Мне нужен только .FRF файл.

Если djvused.exe не хочет обрабатывать результат работы FRFGrab.EXE, такой результат тоже можно высылать в RAR/ZIP архивах.

Ну и конечно, очень нужны ваши замечания и предложения.


7.01.2007, Bulgaria, Sofia.

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


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

9 марта 2007 г.

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

Hosted by uCoz