- PVSM.RU - https://www.pvsm.ru -

Добавление OCR-слоя и другие преобразования PDF

OCRmyPDF выравнивает и оптимизирует PDF-файлы вместе с распознаванием текста

OCRmyPDF выравнивает и оптимизирует PDF-файлы вместе с распознаванием текста

При сканировании и сохранении в формате PDF зачастую документы сохраняются в виде графических изображений. Это неудобно, потому что делает невозможным полнотекстовый поиск по содержанию. Утилита OCRmyPDF [1] решает эту проблему: она одной командой из консоли добавляет к PDF-документу слой OCR с распознанным текстом.

Ниже упомянуты ещё несколько полезных инструментов для парсинга PDF, в том числе для преобразования сложных математических PDF-документов в текстовый формат Markdown.


OCRmyPDF

Распознанный текст в OCR-слое можно выделить и скопировать в другой документ, и по нему легко проводить полнотекстовый поиск.

Установка стандартной командой из пакетного менеджера:

apt install ocrmypdf

В Windows устанавливается в подсистеме WSL.

Запуск из консоли:

Добавление OCR-слоя и другие преобразования PDF - 2

Основные функции:

  • Из обычного PDF создаёт файл PDF/A [2] с возможностью поиска

  • Размещает текст OCR точно под изображением, чтобы упростить копирование

  • Сохраняет точное разрешение оригинальных встроенных изображений

  • По возможности вставляет OCR-информацию, не затрагивая другой контент

  • Оптимизирует PDF-изображения, создавая файлы меньшего размера, чем исходный

  • По запросу выравнивает и/или очищает изображение перед распознаванием текста

  • Проверяет входные и выходные файлы

  • Распределяет работу между всеми ядрами CPU

  • Использует опенсорсный движок Tesseract OCR [3] для распознавания более 100 языков

  • Сохраняет конфиденциальность данных, поскольку работает локально и ничего не отправляет на удалённый сервер

  • Возможна обработка больших файлов на тысячи страниц

Дополнительные параметры при запуске:

ocrmypdf                      # программу можно вставлять в различные скрипты
   -l eng+fra                 # поддержка множества языков
   --rotate-pages             # исправление неправильного наклона страниц
   --deskew                   # выравнивание кривых PDF-файлов
   --title "My PDF"           # изменение выходных метаданных
   --jobs 4                   # использование нескольких ядер CPU по умолчанию
   --output-type pdfa         # выдача формата PDF/A по умолчанию 
   input_scanned.pdf          # какие файлы принимаются для обработки: PDF, изображения
   output_searchable.pdf      # выдача валидного PDF

В репозитории на Github [1] автор пишет, что надёжность работы программы проверена на миллионах файлов.

Подробнее технические детали см. в документации [4].

Слои PDF

Из других полезных инструментов для работы со слоями PDF можно назвать PDFSyntax [5], это визуализация внутренней структуры PDF-файла. Визуализация в виде статического HTML. Инструмент можно попробовать в онлайн-демо [6], вот как выглядит парсинг (частичный скриншот):

Добавление OCR-слоя и другие преобразования PDF - 3

Конкретно эта выдача соответствует документу Simple Text String [7] из спецификации PDF.

Вообще, такой парсинг PDF перед открытием является хорошей антивирусной защитой. Он позволяет проверить документ на наличие скрытых объектов, которые могут пройти незамеченными через антивирусные сканеры. В последнее время эффективной является тактика составления персонализированных писем с помощью LLM [8] и приложение к ним инфицированных PDF-отчётов с использованием 0day-уязвимостей, которые проходят через антивирусные сканеры.

Если в PDF-файле нет слоя с простым текстом, а только изображения JPEG, то можно использовать OCR-распознавание с помощью инструмента OCRmyPDF, упомянутого выше.

Из PDF в Markdown

Преобразование PDF в текст можно произвести с помощью LLM или программных инструментов, которые интегрируют протокол MCP (Model Context Protocol) и используют LLM для этой задачи.

Например, есть программа PDFMathTranslate [9] для перевода научных документов/статей с одного языка на другой с сохранением форматирования онлайн-демо [10]:

Добавление OCR-слоя и другие преобразования PDF - 4

Эта программа нуждается в LLM для работы, модель скачивается вместе с утилитой.

Есть ещё легковесная питоновская утилита MarkItDown [11] для конвертации разнообразных форматов в Markdown, недавно добавили поддержку MCP для агентов ИИ: см. MarkItDown-MCP [12].

В данный момент поддерживаются следующие форматы:

  • PDF

  • PowerPoint

  • Word

  • Excel

  • Изображения (экспортируются EXIF-метаданные и работает OCR)

  • Звук (экспортируются EXIF-метаданные и осуществляется распознавание речи)

  • HTML

  • Текстовые форматы (CSV, JSON, XML)

  • ZIP-файлы (перебор содержимого)

  • URL-адреса Youtube

  • EPub

  • и др.

Работает командой из консоли вроде такой:

markitdown path-to-file.pdf

Также на входе принимает URL:

markitdown = MarkItDown()
result = markitdown.convert_uri("file:///path/to/file.txt")
print(result.markdown)

Со всех форматов файлов генерируется простой текстовый Markdown.

Автор: GlobalSign_admin

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/pdf/428990

Ссылки в тексте:

[1] OCRmyPDF: https://github.com/ocrmypdf/OCRmyPDF

[2] PDF/A: https://en.wikipedia.org/?title=PDF/A

[3] Tesseract OCR: https://github.com/tesseract-ocr/tesseract

[4] документации: https://ocrmypdf.readthedocs.io/en/latest/

[5] PDFSyntax: https://github.com/desgeeko/pdfsyntax/blob/main/docs/browse.md

[6] онлайн-демо: https://pdfsyntax.dev/simple_text_string.html

[7] Simple Text String: https://github.com/desgeeko/pdfsyntax/raw/main/samples/simple_text_string.pdf

[8] составления персонализированных писем с помощью LLM: https://habr.com/ru/companies/globalsign/articles/910420/

[9] PDFMathTranslate: https://github.com/Byaidu/PDFMathTranslate

[10] онлайн-демо: https://pdf2zh.com/

[11] MarkItDown: https://github.com/microsoft/markitdown

[12] MarkItDown-MCP: https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp

[13] Источник: https://habr.com/ru/companies/globalsign/articles/940286/?utm_campaign=940286&utm_source=habrahabr&utm_medium=rss