PDF Extractor - извлекаем информацию из PDF с помощью Poppler

Публикация № 1241161

Разработка - Инструментарий разработчика - Прочие инструменты разработчика

PDF poppler извлечь текст картинки разбить объединить

«Класс» - обёртка для упрощения использования возможностей Poppler из 1С. Позволяет просто извлекать информацию из PDF-файлов в виде изображений и текста.

Мой велосипед для извлечения информации из PDF.

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

По сути представляет из себя обёртку для более удобного использования библиотеки Poppler, поэтому последний должен быть установлен на компьютере. Poppler можно прописать в PATH, либо указывать путь к библиотеке непосредственно в обработке.

Возможности:

  • Извлечение страниц файла в виде изображений (настраивается качество, номера страниц, цветность, форма)
  • Извлечение страниц файла в виде текста
  • Извлечение отдельных изображения, содержащихся в PDF-документе
  • Разбиение (разделение) одного файла на несколько
  • Объединение нескольких файлов в один

Примеры использования:

1. Сохраняем каждую страницу файла, как отдельное изображение
PDF_Extractor = Обработки.PDF_Extractor.Создать(); // Если встроили обработку в конфигурацию
PDF_Extractor.КаталогPoppler = ""; // Можно не указывать, если poppler прописан в PATH
Изображения = PDF_Extractor.ФайлВИзображения("D:\my_file.pdf");

Для Каждого Изображение ИЗ Изображения Цикл
   Картинка = Новый Картинка(Изображение.ДвоичныеДанные);
   // Дальнейшая работа с изображением   
КонецЦикла;
2. Извлечение текста
PDF_Extractor = Обработки.PDF_Extractor.Создать();
Страницы = PDF_Extractor.ФайлВТекст("D:\my_file.pdf");

Для Каждого Страница ИЗ Страницы Цикл
    Если 0 < Найти(Страница.Текст, "что-то") Тогда
        // Обработка текста, поиск и т.п.
    КонецЕсли;
КонецЦикла;
3. Извлечение встроенных картинок
PDF_Extractor = Обработки.PDF_Extractor.Создать();
Изображения = PDF_Extractor.ИзображенияИзФайла("D:\my_file.pdf");

Для Каждого Изображение ИЗ Изображения Цикл
    НомерСтраницы = Изображение.НомерСтраницы;    // Возможно, ищем картинку
    НомерКартинки = Изображение.НомерИзображения; // на конкретной странице
    Расширение = Изображение.Расширение;
    Картинка = Новый Картинка(Изображение.ДвоичныеДанные);
    // Дальнейшая работа с изображением
КонецЦикла;
4. Разбиваем один файл на несколько
PDF_Extractor = Обработки.PDF_Extractor.Создать();
Файлы = PDF_Extractor.РазбитьФайл("D:\my_file.pdf", "D:\Каталог"); // Каталог можно не указывать

Для Каждого Файл ИЗ Файлы Цикл
    Сообщить("Создан файл: " + Файл.ПолноеИмя);
КонецЦикла;

5. Склеиваем несколько файлов в один

ФайлыДляОбъединения = Новый Массив();
ФайлыДляОбъединения.Добавить("D:\small_file_1.pdf");
ФайлыДляОбъединения.Добавить("D:\small_file_2.pdf");
ФайлыДляОбъединения.Добавить("D:\small_file_3.pdf");

PDF_Extractor = Обработки.PDF_Extractor.Создать();
Файл = PDF_Extractor.ОбъединитьНесколькоФайлов(ФайлыДляОбъединения, "D:\big_file.pdf");
ОтправитьФайл("mail@example.com", Файл); // Или любая другая обработка полученного файла
6. Получение служебной информации о файле
Сообщить(PDF_Extractor.СтрокаИнформацииОФайле("D:\my_file.pdf"));
// или так
Информация = PDF_Extractor.ИнформацияОФайле("D:\my_file.pdf"));
Для Каждого Поле ИЗ Информация Цикл
    Сообщить(Поле.Ключ + " - " + Поле.Значение);
КонецЦикла;

Ложка дёгтя:

Так как это всё-таки обёртка над библиотекой, то есть некоторая неиформативность в сообщениях об ошибках. Наверно, можно сделать вывод ошибок более понятным, но я, если честно, не очень старался в этой части.

Все методы в случае ошибки возвращают Неопределено. Если это произошло, вызываем метод ПоследняяОшибка() и получаем примерно следующее:

Сообщить(ПоследняяОшибка());

// Не удалось сохранить страницу файла
// pdftoppm "D:\383251.pdf" -r 200 -f 12 -l 12 -jpeg > "C:\Windows\Temp\v8_2F17_be.jpeg"

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

Тестировалось в следующих условиях:
  • ОС Windows 10 x64, релизы платформы 8.2.19.116 и 8.3.16.1148
  • ОС Ubuntu 18.04 x64, релиз платформы 8.3.15.1565

Похожие разработки:

P.S.1 Корректировка ошибок и предложения по улучшению приветствуются.
P.S.2 Бинарники для Windows брал здесь.

Скачать файлы

Наименование Файл Версия Размер
PDF Extractor - извлекаем информацию из PDF с помощью Poppler:

.epf 15,28Kb
25.05.20
7
.epf 20200529 15,28Kb 7 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. утюгчеловек 23 26.05.20 12:51 Сейчас в теме
Почему бы не встроить бинарники поплера в обработку в качестве макетов, сохранять во временную папку и запускать оттуда, избавляя пользователя необходимости устанавливать попплер отдельно?
Это не секьюрно, но раз решение все равно нацелено на личное использование - можеть оказаться удобно, нет?
2. salexdv 1887 26.05.20 13:26 Сейчас в теме
(1) Poppler может обновляться, и каждый раз при этом обновлять обработку не очень хочется, да и занимают эти бинарники довольно много места. Кроме того решение, вроде как, кроссплатформенное.
Если бы это была часть распространяемого решения, тогда да, ваш вариант был бы очень кстати.
3. Nio 60 29.05.20 09:00 Сейчас в теме
Подскажите пожалуйста а распознать текст на картинке в фале pdf может?
Сканируют на сканеры документ и присылают в pdf.
4. salexdv 1887 29.05.20 09:14 Сейчас в теме
(3) К сожалению, нет. Если PDF сделан, как обычный документ, тогда текст извлекается, а со сканера - это чисто картинка.
5. Nio 60 29.05.20 13:03 Сейчас в теме
(4) Эх чуда не произошло. Спасибо.
6. salexdv 1887 29.05.20 14:46 Сейчас в теме
(5) Вы можете сохранить каждую страницу, как отдельную картинку, а потом попробовать что-то вроде этого.
7. Nio 60 29.05.20 20:34 Сейчас в теме
(6)Да я видел. Застрял на получение токена. Токен вроде есть а не работает.
Оставьте свое сообщение

См. также

Просмотр структуры базы в СУБД, в том числе расширений

Структура метаданных Расширения Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Структура таблиц базы данных с учётом расширений.

1 стартмани

29.09.2020    2435    19    Yashazz    4    

Генератор внешних печатных форм

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Консоль запросов Прочие инструменты разработчика Универсальные печатные формы v8 1cv8.cf Абонемент ($m)

Генератор печатных форм - инструмент для создания внешних печатных форм в режиме предприятия с минимальным написанием кода

3 стартмани

18.09.2020    1416    10    andy_zhav    7    

Отладка расчета себестоимости в ERP - просмотр изменений временных таблиц

Практика программирования Закрытие периода Прочие инструменты разработчика v8::БУ ERP2 БУ Абонемент ($m)

Как уследить за изменениями в сотне временных таблиц на различных этапах выполнения расчета себестоимости. Тестировалось на 1С:ERP Агропромышленный комплекс 2 (2.4.12.75)

1 стартмани

09.09.2020    1701    6    doom2good    0    

Разбор печатной формы. Обработка

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Назначение обработки - помочь програмистам при создании печатных форм и отчетов на базе табличного документа 1С

1 стартмани

05.09.2020    1436    6    Ivon    0    

Тестирование проводок в ЕРП

Прочие инструменты разработчика v8 ERP2 Россия БУ Абонемент ($m)

Показывает тексты запросов, которыми формируются бухгалтерские проводки по документу. В обработке можно отредактировать тексты запросов и посмотреть, как изменится результат отражения в регл. учете. Также в обработке можно узнать содержание временных таблиц, которые формируются при отражении документа в регл. учете. Обработку рекомендуется использовать для отладки формирования проводок и анализа проблем с отражением в регл. учете.

1 стартмани

02.09.2020    1092    4    JohnConnor    3    

CSV парсинг на 1С8, допускающий включение кавычек и символа переноса строки в полях

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Чтение файла происходит блоками, а не посимвольно, что ускоряет процесс. Конец строки это символ возврата каретки (13), символ переноса строки (10) игнорируется и может быть включен в текстовое поле. Также парные кавычки "" внутри поля воспринимаются как одиночный символ кавычек.

1 стартмани

31.08.2020    878    0    e-rogov    0    

Визуальный html WYSIWYG редактор без сторонних библиотек на управляемых формах

Прочие инструменты разработчика Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Простой и удобный html редактор без сторонних библиотек.

1 стартмани

31.08.2020    3053    7    ivanov660    10    

Генератор кода COM-обмена

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Обработка предназначена для автоматического создания кода для загрузки данных из другой базы 1С через COM-соединение.

1 стартмани

20.08.2020    1395    7    ManyakRus    4    

Проверка ведения учета (универсальная)

Анализ учета Прочие инструменты разработчика v8 v8::Запросы Россия Абонемент ($m)

Универсальная проверка ведения учета, построенная на запросах. Выполнена в виде расширения, имеет функции подключения к другим информационным базам по технологии внешних соединений и отладчик, поддерживает конструктор запросов. Предназначена для использования как информационно-техническими специалистами, так и для самостоятельного использования конечными пользователями.

2 стартмани

11.08.2020    1370    8    vozhd    2    

Внешняя компонента на C# для парсинга страниц через Phantom JS на сервере 1С х32,х64

Прочие инструменты разработчика WEB v8 1cv8.cf Абонемент ($m)

PhantomJS - это браузер без окна, используемый для автоматизации взаимодействия с веб-страницами. PhantomJS предоставляет JavaScript API, обеспечивающий автоматическую навигацию, снимки страницы, эмуляции поведение пользователя, что делает его распространенным инструментом, используемым для запуска модульных тестов на основе браузера в автономной системе, такой как среда непрерывной интеграции . PhantomJS основан на WebKit, что делает его похожей на Safari и Google Chrome средой просмотра. Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD.

1 стартмани

06.08.2020    2060    2    DrZombi    7    

Сужающийся поиск различий между базами

Поиск данных Универсальные обработки Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Автоматизированный поиск различий в данных, сужающийся по времени.

1 стартмани

30.07.2020    1519    1    Yashazz    0    

Подготовка текста кода 1С для регистрации программы ЭВМ

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Данная обработка предназначена для подготовки текста кода форм, модулей менеджера, объектов из выгруженных файлов.

1 стартмани

21.07.2020    1967    0    uribur    3    

Консоль кода для управляемых форм

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Консоль кода для управляемых форма с подсказками и подсветкой синтаксиса.

1 стартмани

17.07.2020    12026    194    salexdv    205    

Обозреватель данных подсистем

Администрирование данных 1С БСП (Библиотека стандартных подсистем) Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Часто возникает необходимость быстро разобраться в наполнении справочников, документов, из которых состоит подсистема, и при этом сложность конфигураций и возможности настройки таковы, что сложно увидеть все вместе.

1 стартмани

15.07.2020    2186    2    sergbsv    1    

Сравнение результатов глобального поиска по текстам

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Обработка позволяет сравнить между собой результаты двух глобальных поисков по текстам.

3 стартмани

15.07.2020    1888    0    Hitcher    2    

Шаблон отчета с обработкой данных

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Отчет с кнопкой программного вывода результата в таблицу значений (дерево значений).

1 стартмани

14.07.2020    1810    0    user1209971    0    

Шаблонизатор

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Создание программного кода для заполнения документа по указанному шаблону.

1 стартмани

06.07.2020    1917    2    Salimbek    0    

Консоль выполнения кода в 1С (обычные и управляемые формы)

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Иногда возникает необходимость выполнить некоторые действия в 1С, ради которых не хочется писать внешнюю обработку на пару строк кода. Для таких действия предназначена "Консоль выполнения кода в 1С".

1 стартмани

19.06.2020    7695    58    Denr83    0    

Отчёт по содержимому КД 2.0

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 Конфигурирование 1С Прочие инструменты разработчика v8 КД Абонемент ($m)

Просто отчёт по правилам конвертации - всё, что в них есть.

1 стартмани

05.06.2020    2264    6    Yashazz    4    

Тестирование отчетов

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Обработка "Тестирование отчетов" предназначена для тестирования списка отчетов путем их сравнения в модифицируемой базе и эталонной. Для сравнения используется механизм платформы 1С "Сравнить файлы". Отличие предлагаемого решения в удобстве использования для списка отчетов.

1 стартмани

29.05.2020    1774    0    keifaya    0    

Конструктор сравнения таблиц значения, в том числе из внешней базы

Прочие инструменты разработчика v8::СКД 1cv8.cf Россия Абонемент ($m)

Предложен конструктор для определения различий между таблицами значений (ТЗ), в том числе сформированных во внешней базе данных. Конструктор использует СКД. Сравнение данных в разных базах востребовано, например, при свёртке базы или объединении двух баз в одну. Также конструктор можно применять для контроля обмена или просто сравнить две ТЗ. Применение СКД для формирования (ТЗ) снижает трудозатраты и гарантирует корректное сравнение по наименованию колонок.

1 стартмани

28.05.2020    2251    5    pavley2002    2    

Спасение рядового Райана

Обработка документов Универсальные обработки Обработка справочников Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Бывало, что потратишь полчаса, набьёшь в документ кучу данных, а его потом не записать? И вся работа насмарку? Тогда прошу под кат.

1 стартмани

22.05.2020    3056    4    the1    3    

Шаблоны внешних отчетов и обработок для обычных и управляемых форм

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

15 шаблонов внешних отчетов и обработок для обычных и управляемых форм.

1 стартмани

15.05.2020    2904    49    DNN13    0    

Фильтр объектов на базе СКД

Прочие инструменты разработчика v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Универсальный фильтр объектов на базе СКД. Может применяться как в чистом виде, например, при организации выборочного обмена данными, так и в качестве каркаса для создания сложных механизмов, позволяющих осуществлять обработку документов в зависимости от их содержания.

1 стартмани

13.05.2020    2127    4    olegarch    2    

Метод восстановления битых ссылок в настройках СКД при консольно-конфигураторной разработке отчетов

Практика программирования Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Для тех разработчиков, кто пользуется различными консолями СКД, бывает неудобен тот факт, что при необходимости дальнейшей разработки сложных отчетов уже в режиме Конфигуратора значения ссылочных объектов в настройках СКД приводятся к строковым значениям и не воспринимаются в дальнейшем в пользовательском режиме. Предложен метод, который поможет справиться с этой неприятностью в большинстве случаев.

1 стартмани

30.04.2020    3910    0    zaxarovsky    4    

Редактирование JSON в виде дерева

Прочие инструменты разработчика v8 Абонемент ($m)

Удобная обработка на 1с для редактирования и просмотра JSON. Замена онлайн сервисам просмотра и редактирования JSON. Релиз 1С, на котором выполнялось тестирование 8.3.15, но думаю будет работать и под более ранними.

1 стартмани

28.04.2020    4004    27    vladnet    12    

Контроль доработок конфигураций

Прочие инструменты разработчика v8 Абонемент ($m)

Конфигурация для отслеживания доработок типовых конфигураций, позволяет ускорить обновление модулей типовых релизов и находить потерянные при обновлении доработки. Имеет ряд уникальных функций, которые не предоставляет конфигуратор 1С.

5 стартмани

27.04.2020    3877    10    Serge R    12    

Подсистема "Редактор Markdown 1C"

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Подсистема для быстрого встраивания в форму редактора языка разметки markdown

2 стартмани

19.04.2020    4697    6    cprit    11    

Создание описания, добавления и чтения таблицы значений

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Иногда приходится создавать Таблицу значения (ТЗ) с большим количеством полей, описывать ТЗ вручную достаточно долго. Для автоматизации этого процесса и написана данная обработка. Данная обработка нужна только программистам.

1 стартмани

16.04.2020    2484    1    Dmitry77    4    

Отладка обработки заполнения

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Внешняя обработка, позволяющая отладить любую написанную вами обработку заполнения.

1 стартмани

12.04.2020    2511    6    ah7777777    0    

Быстрая функция поиска ссылки по УИД(GUID)

Поиск данных Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Простая, а самое главное быстрая функция поиска ссылки на объект в информационной базе по УИД(GUID) через запрос.

1 стартмани

11.04.2020    8455    36    Kondratenko.as    27    

http сервис, возвращающий печатную форму

Печатные формы документов Прочие инструменты разработчика v8 УТ11 Россия Абонемент ($m)

Расширение, которое по get запросу в виде: http:///hs/WSPrint/Download/?UUID=&IDPF=&format= возвращает указанную печатную форму.

1 стартмани

09.04.2020    3131    5    user1350020    0    

Валидация данных

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Пример универсального механизма для валидации данных: проверка типов, связей между таблицами, заполненности полей.

1 стартмани

01.04.2020    5498    3    relines    8    

Конвертация PDF в 1С

Практика программирования Разработка внешних компонент Абонемент ($m)

COM-компонента для работы с PDF.

4 стартмани

31.03.2020    6702    13    SerVer1C    31    

Отладка шаблонов ограничений

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Обработка предназначена для получения результирующего текста ограничений доступа при использовании шаблона ограничений доступа, с учетом фактических параметров, параметров сеанса и функциональных опций.

1 стартмани

26.03.2020    4608    33    vadim1980    3    

Имена таблиц на сервере

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка позволяющая удобно определить, в какой таблице на сервере баз данных находится той или иной объект 1С. Только для управляемого приложения! Тестировалось на платформе 1с 8.3.15.1565.

1 стартмани

19.03.2020    2930    1    alexyur    2    

Подготовка (исправление) XML схем

Прочие инструменты разработчика v8 Абонемент ($m)

Иногда, XML схемы не соответствуют стандарту w3.org и это грустно :-( . Скрипт публикации исправляет ошибки XML схем в автоматическом режиме.

1 стартмани

10.03.2020    3189    0    infosoft-v    3    

Внешний регламент для 1С

Прочие инструменты разработчика v8 Россия Абонемент ($m)

Внешний регламент сделан для тех, кто ценит свое время и время заказчика. После одноразового встраивания в конфигурацию, внешний регламент на лету позволяет добавлять, изменять внешние модули, которые могут выполнятся как регламентные задачи с указанным интервалом или запускаться в ручном режиме для отладки. Все модули (внешние обработки) находятся и выполняются на стороне сервера, что позволяет исключить подмену алгоритмов со стороны клиента.

1 стартмани

05.03.2020    3604    7    moolex    6    

Пишем код в режиме предприятия на УФ

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Тестирование кода прямо в режиме предприятия. Изменение документов и справочников. Управляемые формы. Сохранение и форматирование кода.

1 стартмани

27.02.2020    3319    1    HAMAZ    9