Вернуться к разделу "Программа DjvuOCR".
Программа для извлечения информации из
рабочих 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
--
игнорировать все страницы, внутри которых при
"тесте"
возникают ошибки. Делается попытка извлечь из
них
все, что возможно, до обнаружения ошибки. При этом
нумерация страниц в книге сохраняется.
-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, как указано выше.
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
|
||
05.03.2006 - | версия 1.10
|
||
22.02.2004 - | версия 1.09
|
||
16.02.2004 - | версия 1.08 Устранена проблема при отсуствии имени исходника (image name) внутри FRF-файла. |
||
09.02.2004 - | версия 1.07 Введена новая опция "-h". Она *выключает* новый метод переноса слов, который я разработал, и который теперь всегда применяется по умолчанию. Идея метода в том, чтобы избежать проблемы при переносе, когда слово разбивается на части и не может быть найдено при поиске, например:
тогда слово "интегрируема" уже не
находится при поиске.
и при поиске уже находится целое слово "интегрируется". Это, правда, несколько мешает, если мы делаем copy/paste... Кто не хочет эту фичу, должен использовать опцию "-h". |
||
07.02.2004 - | версия 1.06
|
||
31.01.2004 - | версия 1.05
|
||
26.01.2004 - | версия 1.04 Устранена очень серьезная ошибка - line с координатами {0,0,0,0}Это приводило к сообщениям об ошибке для некоторых страниц при поиске в браузере. |
||
25.01.2004 - | версия 1.03
|
||
19.01.2004 - |
|
||
18.01.2004 - | версия 0.3
|
||
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)