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 брал здесь.

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

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

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

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

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

См. также

Уведомление пользователей об изменениях в объектах (расширение)

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

Позволяет без доработок настроить уведомления пользователям об изменениях объектов и их реквизитов. Уведомления отправляются в виде задач по проверке объектов с ссылками на объекты.

2 стартмани

вчера в 23:00    137    0    sapervodichka    1    

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

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

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

1 стартмани

19.06.2020    5504    45    Denr83    0    

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

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

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

1 стартмани

05.06.2020    1130    2    Yashazz    4    

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

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

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

1 стартмани

29.05.2020    835    0    keifaya    0    

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

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

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

1 стартмани

28.05.2020    1170    4    pavley2002    2    

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

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

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

1 стартмани

22.05.2020    1755    2    the1    2    

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

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

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

1 стартмани

15.05.2020    1630    36    DNN13    0    

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

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

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

1 стартмани

13.05.2020    1135    2    olegarch    2    

Полезный костыль для настроек по умолчанию при разработке отчетов на СКД

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

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

1 стартмани

30.04.2020    2029    0    zaxarovsky    4    

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

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

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

1 стартмани

28.04.2020    2586    20    vladnet    12    

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

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

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

5 стартмани

27.04.2020    2247    5    Serge R    8    

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

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

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

2 стартмани

19.04.2020    3260    6    cprit    9    

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

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

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

1 стартмани

16.04.2020    1556    1    Dmitry77    4    

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

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

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

1 стартмани

12.04.2020    1622    5    ah7777777    0    

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

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

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

1 стартмани

11.04.2020    4822    13    Kondratenko.as    27    

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

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

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

1 стартмани

09.04.2020    1839    4    user1350020    0    

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

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

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

1 стартмани

01.04.2020    4080    2    relines    8    

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

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

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

3 стартмани

31.03.2020    4397    8    SerVer1C    27    

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

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

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

1 стартмани

26.03.2020    3352    26    vadim1980    3    

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

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

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

1 стартмани

19.03.2020    2003    0    alexyur    2    

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

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

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

1 стартмани

10.03.2020    2215    0    infosoft-v    3    

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

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

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

1 стартмани

05.03.2020    2394    5    moolex    6    

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

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

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

1 стартмани

27.02.2020    2331    1    HAMAZ    9    

Выполнение произвольного кода 1С на управляемых формах

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

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

2 стартмани

18.02.2020    2985    12    seregapolygon    8    

БСП - Дополнительная обработка - Заполнение объекта - Произвольный алгоритм

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

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

1 стартмани

13.02.2020    2647    0    duhh    2    

Эмуляция COM передачи данных через http сервис

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

Делаем расширение для конвертации 2.0 через http-сервис.

1 стартмани

11.02.2020    3612    12    sikuda    19    

Простая параллельная обработка данных

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

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

1 стартмани

10.02.2020    2753    1    Amadeus007    8    

Выгрузка любого запроса или таблицы значений в текст JSON

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

Отчет позволяет выгрузить любые данные из 1С в JSON текст, выполнив произвольный запрос к данным.

1 стартмани

07.02.2020    5991    21    user796054    18    

Очень простая и удобная отладка внешних обработок

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

Расширение для отладки внешних отчётов и обработок в несколько кликов.

1 стартмани

07.02.2020    3178    25    for_sale    0    

Набор скриптов .bat для автообновления списка баз и версии платформы 1С

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

Автоматическое обновление списка информационных баз 1С, автоматическая установка новой версии платформы на компьютер пользователя.

1 стартмани

23.01.2020    2725    5    ManyakRus    4    

Конструктор запросов при внешнем подключении

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

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

1 стартмани

23.01.2020    2926    2    falcon_wild    1    

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

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

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

2 стартмани

21.01.2020    2589    17    Denr83    0    

1C и защищенное хранение данных на блокчейне: модуль интеграции от Acryl Platform

Защита и шифрование Блокчейн Расширения Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Модуль интеграция 1С и блокчейн платформы "Acryl Platform" без использования внешних компонент. Под катом реализация механизмов Base58, Blake2b, Keccak, Curv25519 (the elliptic curve Diffie–Hellman) в подсистеме "Crypt", примеры генерации ключей, адресов, подписи транзакций, запись данных в блокчейн, чтение и восстановление данных из блокчейн. Код открыть. Лицензия MIT.

1 стартмани

21.01.2020    4766    2    ArtemSerov    17    

Редактор справки 1С

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

Конфигурация для разработки справочной информации для конфигураций 1С. Тестировалось на 1С:Предприятие 8.3 (8.3.13.1690). Файловая база.

3 стартмани

16.01.2020    5539    15    lastpioneer    16    

Документация по объектам расширения конфигурации 1С

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

Обработка для автоматического создания документации для программистов по доработкам в расширении конфигурации.

1 стартмани

14.01.2020    4105    12    ManyakRus    2    

Неиндексированные измерения регистров сведений. В помощь 1С:Эксперту

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

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

1 стартмани

07.01.2020    5592    12    Rustig    30    

Версионирование объектов 1С сторонними средствами

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

В больших информационных системах встает острая необходимость хранения ИСТОРИИ изменений объектов. Она предоставляет материал как для проведения следственных действий, так и для инкрементарного сбора данных в data ware house из 1С конфигураций. Настоящая статья описывает способ версионирования объектов 1С, таких как Документы и Справочники средствами СУБД. Применение такого метода не вызывает рост и фрагментацию основной (рабочей) базы данных (1С) и позволяет сохранять информацию обо всех изменениях, сделанные пользователями.

1 стартмани

06.01.2020    2510    0    pit201201    0    

Глобальный поиск и замена в модулях конфигурации

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

Зачастую у программиста возникает желание работать с кодом модулей конфигурации средствами встроенного языка: так, как мы сейчас работаем с данными. Как результат реализации данной потребности и родилась данная обработка. Она предназначена для минимизации ручного труда при внесении однотипных изменений в модули конфигурации. Она представляет из себя расширение глобального поиска и замены в конфигураторе. Отличие в предоставлении ряда дополнительных возможностей, таких, как: наложение условий И, ИЛИ, НЕ; поиск только в названии процедуры / функции, либо в теле определенной процедуры / функции; управление поиском в комментариях и др.

1 стартмани

06.01.2020    2705    4    keifaya    0    

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

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

В базе данных работают разноязычные пользователи и приходится писать наименования объектов сразу на нескольких языках? ЕСТЬ РЕШЕНИЕ!

2 стартмани

04.01.2020    2437    1    onec.developer    0    

Анализ подписок на события

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

Внешний отчет по подпискам на события.

1 стартмани

31.12.2019    2337    3    Sergspectr    4