PDF parser library
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.01.20 19:29
Оценка:
С Новым Годом, дорогие товарищи!

Скажите пожалуйста, есть ли в природе библиотечка, позволяющая парсить PDF файлы? Цель — повыдергать из них embedded images, и поскольку эти PDFки приходят со сканера, то я очень сомневаюсь, что в них есть что-либо, кроме этих картинок. Поэтому углубленное понимание встроенных фонтов, заполняемых таблиц, шифрования, яваскрипта и прочей PDFной премудрости не требуется, но библиотечка не должна падать от того, что ее накормили PDF-кой средней кривезны, и должна игнорировать все, что она не понимает, а не сходить от этого с ума.

Распаковка картинок тоже не требуется, мне бы их повыдергать, а распакую я уже сам.

Хотелось бы что-нибудь попроще, чем poppler, и лучше бы на C, чем на C++.
Re: PDF parser library
От: RonWilson Россия  
Дата: 01.01.20 19:33
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>С Новым Годом, дорогие товарищи!


Pzz>Скажите пожалуйста, есть ли в природе библиотечка, позволяющая парсить PDF файлы? Цель — повыдергать из них embedded images, и поскольку эти PDFки приходят со сканера, то я очень сомневаюсь, что в них есть что-либо, кроме этих картинок. Поэтому углубленное понимание встроенных фонтов, заполняемых таблиц, шифрования, яваскрипта и прочей PDFной премудрости не требуется, но библиотечка не должна падать от того, что ее накормили PDF-кой средней кривезны, и должна игнорировать все, что она не понимает, а не сходить от этого с ума.


Pzz>Распаковка картинок тоже не требуется, мне бы их повыдергать, а распакую я уже сам.


Pzz>Хотелось бы что-нибудь попроще, чем poppler, и лучше бы на C, чем на C++.


Вот, достаточно простая и небольшая
Re[2]: PDF parser library
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.01.20 19:51
Оценка:
Здравствуйте, RonWilson, Вы писали:

RW>Вот, достаточно простая и небольшая


Так это ж скорее программа, а не библиотека.
Re: PDF parser library
От: PM  
Дата: 01.01.20 20:32
Оценка:
Здравствуйте, Pzz, Вы писали:

Есть PDFium от гугла (бывшая FoxIt). Я использовал ее для извлечения текста, но в API вроде были функции для получения другой информации из документа: https://pdfium.googlesource.com/pdfium/+/refs/heads/master/public/

Как типичная гугловская библиотека, эта идет без документации и вероятно потребует приседаний для сборки.
Re[2]: PDF parser library
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.01.20 22:24
Оценка:
Здравствуйте, PM, Вы писали:

PM>Есть PDFium от гугла (бывшая FoxIt). Я использовал ее для извлечения текста, но в API вроде были функции для получения другой информации из документа: https://pdfium.googlesource.com/pdfium/+/refs/heads/master/public/


PM>Как типичная гугловская библиотека, эта идет без документации и вероятно потребует приседаний для сборки.


Это все-таки полномасштабная рендерилка. А мне бы что-нибудь попроще. В частности потому, что PDF по природе своей — это векторная графика, и чтобы полноценно его разрендерить, надо обладать куском памяти размером с целое изображение. А вот JPEG'и и прочие TIFF'ы можно декодировать построчно.

Я хочу получить картинку со сканера, и распаковывать ее по мере потребления, не заводя буфера на полную картинку. Потому что этот буфер, он дохрена, какой большой (полгига для листочка A4 с разрешением 1200 DPI). Поэтому мне бы выковырнуть из PDF'а эти картинки в их нативном виде (а они там JPEG/PNF/TIFF и т.п.), а дальше с этим нативным видом и разбираться. Т.е., для меня PDF — это такой ZIP-архив в дебильном формате

В любом случае, спасибо.
Re[3]: PDF parser library
От: RonWilson Россия  
Дата: 01.01.20 23:02
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, RonWilson, Вы писали:


RW>>Вот, достаточно простая и небольшая


Pzz>Так это ж скорее программа, а не библиотека.


Ни-ни, там именно библиотека, пример в проге pdftotext, там просто прогу показывают на базе этой библиотеки, самой ей никакие qt к примеру не нужны.
Re[4]: PDF parser library
От: RonWilson Россия  
Дата: 02.01.20 03:03
Оценка:
Здравствуйте, RonWilson, Вы писали:

RW>Здравствуйте, Pzz, Вы писали:


Pzz>>Здравствуйте, RonWilson, Вы писали:


RW>>>Вот, достаточно простая и небольшая


Pzz>>Так это ж скорее программа, а не библиотека.


RW>Ни-ни, там именно библиотека, пример в проге pdftotext, там просто прогу показывают на базе этой библиотеки, самой ей никакие qt к примеру не нужны.


может что там изменилось, но как-то уже тут спрашивали про неё, вот архив
Re: PDF parser library
От: Elevener  
Дата: 14.01.20 09:35
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>С Новым Годом, дорогие товарищи!


Pzz>Скажите пожалуйста, есть ли в природе библиотечка, позволяющая парсить PDF файлы? Цель — повыдергать из них embedded images, и поскольку эти PDFки приходят со сканера, то я очень сомневаюсь, что в них есть что-либо, кроме этих картинок. Поэтому углубленное понимание встроенных фонтов, заполняемых таблиц, шифрования, яваскрипта и прочей PDFной премудрости не требуется, но библиотечка не должна падать от того, что ее накормили PDF-кой средней кривезны, и должна игнорировать все, что она не понимает, а не сходить от этого с ума.


podofo
http://podofo.sourceforge.net/

подключать проще через vcpkg.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: PDF parser library
От: serj.e  
Дата: 21.02.20 20:35
Оценка:
Pzz>Я хочу получить картинку со сканера, и распаковывать ее по мере потребления.
Pzz>Поэтому мне бы выковырнуть из PDF'а эти картинки в их нативном виде (а они там JPEG/PNF/TIFF и т.п.), а дальше с этим нативным видом и разбираться.

Парсер PDF именно в данной конкретной постановке задачи видится избыточной сущностью. За глаза хватит топорно-дуболомного libmagic-подобного детектора старта JPEG/PNG/TIFF-стрима. Вероятность 99.(9)%, что контент-стримы с изображением вставлены в PDF прямым текстом, и их можно просто-напросто выкусывать не обращая внимания на обрамление. Вряд ли авторам ПО для сканера пришло в голову так извращаться, чтобы заворачивать JPEG–стрим в какой-нибудь там DEFLATE–стрим, а его, в свою очередь, в, к примеру, AES–стрим
Re[4]: PDF parser library
От: Pzz Россия https://github.com/alexpevzner
Дата: 21.02.20 20:55
Оценка:
Здравствуйте, serj.e, Вы писали:

SE>Парсер PDF именно в данной конкретной постановке задачи видится избыточной сущностью. За глаза хватит топорно-дуболомного libmagic-подобного детектора старта JPEG/PNG/TIFF-стрима. Вероятность 99.(9)%, что контент-стримы с изображением вставлены в PDF прямым текстом, и их можно просто-напросто выкусывать не обращая внимания на обрамление. Вряд ли авторам ПО для сканера пришло в голову так извращаться, чтобы заворачивать JPEG–стрим в какой-нибудь там DEFLATE–стрим, а его, в свою очередь, в, к примеру, AES–стрим


На самом деле, они примерно это и делают
Re[5]: PDF parser library
От: serj.e  
Дата: 22.02.20 13:29
Оценка:
Pzz>На самом деле, они примерно это и делают

Мда, бóльшие извращенцы, чем можно было предположить. В таком раскладе парсер нужен.

PS. Есть одна сишная, простая и удобная в интеграции библиотека mupdf, единственное, с фатальным недостатком в виде драконовской двойной лицензии (GPL v3 + Comercial с неразглашаемой ценой по запросу). Если условия лицензии подойдут, то всё, несвязанное со структурой документа (шрифты-рендеринги-кернинги и т.д.) оттуда довольно просто можно выпилить, если не хочется засорять продукт мертвым кодом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.