Как присоединиться к инициативе
Средства распознавания
Нужно установить программу оптического распознавания символов (OCR). Используется tesseract, как
показавшая достаточное качество распознавания, в том числе и повёрнутых и некачественных изображений.
Установка tesseract:
apt-get install tesseract-ocr
По умолчанию tesseract поддерживает распознавание только английского языка. Поэтому нужно
установить поддержку других языков.
Установка других языков распознавания:
apt-get install tesseract-ocr-rus, tesseract-ocr-deu
Список поддерживаемых языков имеется в документации к tesseract.
Средства обработки файла
В настоящее время работа вдётся только с файлами djvu. Для файлов pdf, к сожалению, не создано
работоспособных средств постраничного распознавания и внедрения текстового слоя. Как только
такие средства появятся - инициатива будет расширена и на распознавание pdf файлов.
Для постраничного распознавания и внедрения текстового слоя в файлы djvu используется
программа ocrodjvu. К сожалению, в репозиториях
операционных систем имеется слишком старая версия, а установка из репозитория python не разрешает
зависимостей. Поэтому рекомендуется сперва ставить из репозитория операционной системы, а потом
обновить из репозиторя python.
Установка ocrodjvu из репозитория операционной системы:
apt-get install ocrodjvu
Обновление ocrodjvu из репозитория python:
Установите pip, если его нет в вашей системе:
apt-get install pip
потом обновите ocrodjvu:
pip install --update ocrodjvu
Предполагается, что вы используете последние стабильные версии всех компонентов. Работоспособность
системы со старыми версиями не гарантируется. Также предполагается, что если зависимости в пакетах
python почему-либо не разрешились при установке - вы сможете поставить недостающее руками.
Так, например, скорее всего понадобится установить модуль html5lib:
pip install html5lib
Координирующий скрипт
Работа по распознаванию координируется скриптом massocr.py, архив с которым можно скачать по ссылке ниже.
Предполагается, что раз запущенный, скрипт выполняет свою работу 24 часа в сутки, 7 дней в неделю, 12 месяцев
в году... без вмешательства и обслуживания.
Скрипт обращается к управляющему серверу, адрес которого указан в файле settings.py, получает от него
url файла, подлежащего распознаванию, скачивает файл, запускает ocrodjvu, а потом отсылает распознанный файл по
адресу, переданному управляющим сервером.
В файле settings.py находятся основные параметры, необходимые для работы скрипта. Некоторые из них
можно изменять:
- ocrdir - это место для размещения скачиваемых файлов
- ocrengine - строка запуска ocrodjvu. Измените её в соответствии со своим местоположением программы ocrodjvu.
Также можно добавить параметр -j (--jobs), определяющий, сколько потоков распознавания будет запущено.
Если это выделенная машина - то -j нужно установить в число процессоров (процессорных ядер) на этой машине (если процессор с
поддержкой технологии Intel Hyper-Threading - рекомендуется включить), если не выделенная -
сколько не жалко.
Важно, чтобы параметр -l был последним.
- prefLang - перечень языков, тексты на которых вы предпочитаете распознавать. Языки нужно указывать
так, как они указаны в списке поддерживаемых языков tesseract, через запятую. В основном - это трёхбуквенные
аббревиатуры в соответствии с ISO 639-2. Подразумевается, что указывается основной язык текста. Для
распознавания латиницы в неанглийских текстах при вызове ocrodjvu всё равно указывается параметр +eng,
однако, если вы не указали в prefLang язык eng - тексты полность (в основном, существенно) на английском
вам передаваться не будут.
- attempts - число попыток соединиться с источником или приёмником файлов. Бывает так, что
источник, указанный управляющим сервером для получения файла для распознавания, недоступен, не может
ответить на вызов, сильно загружен, etc. То же самое относится и
к приёмнику файлов. В этом случае возникают ошибки связи. Параметр attempts указывает число попыток
получения или передачи файла, которые предпримет скрипт прежде, чем прекратит свою работу с сообщением
об ошибке связи.
- attemptsTimeOut - интервал в секундах между повторными попытками принять или отправить файл.
Этот и предыдущий параметры не влияют на соединение с управляющим сервером. Если управляющий сервер
недоступен, скрпт немедленно прекращает свою работу.
Не меняйте другие параметры - это может нарушить нормальную работу скрипта. Так, переменная user содержит
ваш персональный идентификатор. Его использование позволяет разрешить некоторые коммуникационные проблемы,
и получать индивидуальную статистику. Перед первым запуском эта переменная пустая. Во время первого
запуска (без параметра командной строки --test, см. ниже) идентификатор будет получен от управляющего сервера и записан в этот файл.
Координирующий скрипт имеет следующие параметры командной строки:
massocr.py [-i] [--test]
- -i, --iters N - число файлов, которые следует обработать. При отсутствии параметра - файлы обрабатываются
до тех пор, пока они не кончатся на управляющем сервере.
- -s, --stay - оставлять(1) ли распознанный файл, или удалять (0). Обычно после окончания обработки
распознаваемый файл удаляется. Установив этот параметр в 1, можно оставлять на вашей машине
распознаваемые файлы. Они будут сохраняться в каталоге, указанном переменной ocrdir в файле settings.py.
- -d, --do-list имя_файла - Имеется возможность указать скрипту, что вы желаете распознать в первую очередь
определённый перечень файлов. Подготовьте текстовый файл с перечнем контрольных сумм MD5 желаемых файлов, по одной
на строку, и укажите его имя в этом параметре. После MD5 может идти произвольный ткст.
Скрипт будет запрашивать у управляющего сервера файлы из этого списка, распознавать их и сохранять в
каталоге, указанном переменной ocrdir в файле settings.py. Если запрашиваемый файл уже распознан,
управляющий сервер пришлёт распознанный вариант - для сохранения. Повторное распознавание производиться
не будет.
- --test - отладочный режим, предназначенный для проверки коммуникаций. Скрипт запросит и получит файл,
но не будет его распознавать. Потом он передаст его по назначению, но файл не будет занесён в библиотеку.
Также информация об этих действиях не будет сохранена управляющим сервером. Настоятельно рекомендуется выполнять
первые запуски с этим параметром.
В работе скрипта используются модули python, которые могут отсутствовать в вашей конфигурации.
Но все они есть в репозитории python.
Установка необходимых модулей:
pip install requests
pip install python-magic
О других средствах распознавания и обработки
Как видно из вышесказанного, для обработки и распознавания координирующий скрипт может вызвать любую
консольную программу, указанную в переменной ocrengine. Это позволяет использовать не только рекомендуемый
состав программного обеспечения, но и любой другой. Однако, если вы захотите пользоваться в рамках инициативы
своими средствами распознавания и обработки - вы должны согласовать их применение с координатором,
с тем, чтобы члены инициативы были уверены в достаточном качестве результата.
Если вы готовы присоединиться к инициативе - скачайте архив с координирующим скриптом и запустите его!