pd3f-core
Экспериментальный вариант, используйте осторожно.
pd3f-core
— это пакет Python для восстановления исходного непрерывного текста из PDF-файлов с использованием языковых моделей. pd3f-core
предполагает, что ваш PDF либо текстовый, либо уже OCRd. pd3f-core
лежит в основе pd3f: полноценного конвейера извлечения текста на основе Docker (включая OCR).
pd3f-core
сначала использует Parsr для разделения PDF-файлов на строки и абзацы. Затем он использует дефис пакета Python для восстановления абзацев наиболее вероятным способом. Вероятность получается путем расчета недоумения с помощью моделей символьного языка Флера. Ненужные дефисы удаляются, пробелы или новые строки сохраняются или опускаются в зависимости от окружающих слов.
Он в основном разработан для немецкого языка, но должен работать и с другими языками. Проект все еще находится на ранней стадии. Ожидайте острых углов и быстрых изменений.
Документация API pd3f-core: https://pd3f.github.io/pd3f-core/index.html.
Документация pd3f (): https://pd3f.com/docs/
Проверьте, можно ли соединить две строки, удалив дефисы («-»).
Решите, добавлять ли простой пробел (' ') или новую строку ('n') при соединении строк.
Проверьте, можно ли соединить последний абзац страницы и первый абзац следующей страницы.
Чтобы соединить абзацы (и поменять местами разрывы страниц), обнаруживайте сноски и превращайте их в концевые. На данный момент сноски переносятся в конец файла.
Если верхний или нижний колонтитул одинаковый для всех страниц, отображайте их только один раз. Заголовки переносятся в начало документа, а нижний колонтитул — в конец. Используются некоторые эвристики, основанные на сходстве нижних колонтитулов. (Расстояние Жаккара для текста и сравнение перекрывающихся фигур)
pip install pd3f
или
poetry add pd3f
Запустите локальный экземпляр Parsr:
docker-compose up
(Вы также можете использовать туннелирование удаленного экземпляра Parsr (скрипта) или выбрать удаленный адрес.)
from pd3f import extract
text , tables = extract ( file_path , tables = False , experimental = False , force_gpu = False , lang = "multi" , fast = False , parsr_location = "localhost:3001" )
Пояснения к параметрам в документации: https://pd3f.github.io/pd3f-core/export.html#pd3f.export.extract.
Использование CUDA ускоряет оценку с помощью Flair. Но вам нужен (дорогой) графический процессор. Вам необходимо настроить графический процессор с помощью CUDA. Вот руководство для Ubuntu 18.04.
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
(пример)pd3f-core
с поэзией: poetry add pd3f
Poetry понимает, что он запускается в виртуальной среде conda, поэтому не создает новую. Поскольку настроить CUDA сложно, установите его самым простым способом (с помощью conda).
В основе pd3f-core
лежит вывод JSON Parsr. Некоторые комментарии о том, как и почему были выбраны те или иные вещи. Документация Parsr о различных модулях
В Parsr есть несколько модулей для классификации абзацев по определенным типам. Они предлагают обнаружение списка, а также обнаружение заголовка. По моему опыту, точность слишком низкая для обоих, поэтому мы сейчас не используем ее. Это также означает, что весь извлеченный (выходной) текст является плоским (без заголовков, различного форматирования и т. д.).
Мы включаем функцию «Рисование + обнаружение изображений», потому что нам может потребоваться понять, какой абзац следует за каким другим. Это может быть полезно, когда нужно решить, следует ли объединять абзацы. Но оно падает при активации fast
настройки.
В выводе JSON есть поле pageNumber
. Это поступает из модуля обнаружения страниц. Таким образом, pageNumber
получается из верхнего/нижнего колонтитула каждой страницы. Поэтому он может отличаться от индекса в массиве страниц. Не передавайте pageNumber
в выходных данных JSON.
words-to-line-new
используется следующим образом. Ошибки нет, но при ином использовании точность снижается.
" words-to-line-new " ,
[
" reading-order-detection " ,
Не выполняйте распознавание текста с помощью Parsr, потому что результаты хуже, чем у OCRmyPDF (поскольку последний использует предварительную обработку изображений).
Установите и используйте поэзию.
Стандартная общественная лицензия Афферо 3.0