Вверх ↑
Ответов: 98
Рейтинг: 1
#1: 2024-08-20 09:15:50 ЛС | профиль | цитата
Стандартный ZLIB прекрасно справляется с распаковкой сримов между stream и endstream в PDF фаqлах.

Подозревал, что это корректно работает через HEX из-за нечитаемых символов.

Хотелось бы посмотреть на твоё решение.

Использование сервисов. Например, для извлечения текста (конкретно для распознания известной таблицы) в формате Stext программа MuPDF. Консольный модуль модуль mutool (сейчас доступна версия 2.4.0 для Windows) https://mupdf.readthedocs.io/en/latest/mutool-extract.html.
Пример:
"x:\mutool.exe" convert -o output.stext input.pdf

Более мощное решение по созданию, на мой взгляд, coherentpdf:

Нарисовать изменяемую печать можно так через cmd (свой шрифт):
"x:\cpdf.exe" input.pdf -add-text "Подписи присутствуют\nЛист %Page" -linewidth 0.75 -outline -bottomleft "152 27" -justify-center -load-ttf Gost="C:\WINDOWS\FONTS\GOST_A.TTF" -font Gost -font-size 12 -color "blue" -line-spacing 1 AND input.pdf -add-rectangle "100 26" -outline -bottomleft "150 25" -midline -linewidth 0.75 -color "blue" -o "x:\out.pdf"
Извлечение данных в формат JSON (есть проблемы с кодировкой русских букв в ANSI, да и обнаружил ошибку в работе с русскими символами)
"x:\cpdf.exe" "x:\input.pdf" -output-json -utf8 -output-json-parse-content-streams -o "x:\out.json"

Нарисовать картинку по координатам и размерам (alpha-канал не поддерживается в png):
"x:\cpdf.exe" input.pdf -draw -draw-jpeg stamp="x:\input.jpg" -mscale "0 0 250 50" -image stamp -outline "x:\output.PDF" -o "x:\input.pdf"
"x:\cpdf.exe" input.pdf -draw -draw-png stamp="x:\input.png" -mscale "0 0 250 50" -image stamp -outline "x:\output.PDF" -o "x:\input.pdf"


P.S. По моему, PDF самый неудобный формат для парсинга. И это очень мягко… Обычно матом.

Бесспорно. Распознавание таблиц по координатам текста - та еще "песня". Попроще будет, если знаешь размеры таблицы, калибруясь по координатам первого столбца таблицы.
карма: 0

0
Редактировалось 22 раз(а), последний 2024-08-21 09:18:27