04.10.2024 Егор Баукин 8366
Извлечение текста из файлов PDF в 1С: Предприятие

Содержание:


Современный бизнес все больше полагается на электронные документы. PDF (Portable Document Format) стал одним из самых популярных форматов для обмена и хранения документов благодаря своей универсальности и сохранению форматирования на всех платформах. В системах программы 1С: Предприятие часто возникает необходимость извлечения текста из PDF-файлов для дальнейшей обработки, анализа или хранения в базе данных.


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


1. Необходимость извлечения текста из PDF в 1С

 

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

• Импорт данных: Получение счетов, актов, накладных от контрагентов в PDF-формате и автоматическое занесение данных в систему.

Анализ документов: Поиск и анализ текстовой информации для принятия решений.

Архивирование и хранение: Сохранение текстового содержания документов в базе данных для быстрого поиска и доступа.   


2. Проблематика и вызовы извлечения текста из PDF-файлов

 

Извлечение текста из PDF-файлов не всегда является тривиальной задачей из-за различных факторов:

Различные версии PDF: Файлы могут быть сохранены в разных версиях стандарта PDF.
Шифрование и защита: Некоторые PDF-файлы защищены паролями или шифрованием.
Сканированные документы: Содержат изображения страниц, а не текстовые данные (требуется OCR).
Различные виды контента: Текст, изображения, формулы, таблицы и т.д.   

Система программы 1С: Предприятие не предоставляет встроенных инструментов для прямого извлечения текста из PDF, поэтому необходимо использовать дополнительные методы.


3. Методы извлечения текста из PDF в 1С: Предприятие

 

Существует несколько подходов к извлечению текста из PDF в системы программы 1С: Предприятие:

3.1. Использование внешних библиотек

Подключение сторонних библиотек, поддерживающих работу с PDF, например:

iTextSharp: Библиотека для работы с PDF на C# (для 1С на платформе Windows).
Apache PDFBox: Библиотека на Java для работы с PDF (может быть использована через внешнюю компоненту).
PDFium: Рендеринг и обработка PDF (используется в Google Chrome).

3.2. Встроенные возможности 1С: Предприятие

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


3.3. Сервисы и API

Использование веб-сервисов или API для обработки PDF:

Сервисы распознавания текста (OCR): Для сканированных PDF.
Онлайн-сервисы конвертации: Отправка PDF и получение текста.      

4.     Использование библиотеки iTextSharp

 

iTextSharp — это свободная библиотека для работы с PDF на языке C#.             

Она позволяет создавать, редактировать и извлекать информацию из PDF-файлов. Мы можем использовать ее в 1С посредством внешней компоненты.


4.1. Установка и настройка

1. Скачивание библиотеки:

• Загрузите iTextSharp с официального сайта или через NuGet.

2. Создание внешней компоненты:

• Создайте новую DLL-библиотеку на C#, которая будет оберткой для iTextSharp.

• Реализуйте методы для извлечения текста из PDF.

3. Подключение к 1С:

• Зарегистрируйте DLL как COM-объект или используйте в качестве .NET-сборки.

• В 1С подключите внешнюю компоненту через "Внешние компоненты".


4.2. Пример кода

Пример реализации метода на C#:


using System;

using iTextSharp.text.pdf;

using iTextSharp.text.pdf.parser;

 

public class PdfExtractor

{

    public string ExtractText(string pdfFilePath)

    {

        using (PdfReader reader = new PdfReader(pdfFilePath))

        {

            string text = "";

            for (int i = 1; i <= reader.NumberOfPages; i++)

            {

                text += PdfTextExtractor.GetTextFromPage(reader, i);

            }

            return text;

        }

    }

}


Использование в 1С:


// Подключение внешней компоненты

PdfExtractor = Новый COMОбъект("PdfExtractor");

 

// Путь к файлу PDF

ПутьКФайлуPDF = "C:\Documents\example.pdf";

 

// Извлечение текста

ТекстИзPDF = PdfExtractor.ExtractText(ПутьКФайлуPDF);

 

// Вывод результата

Сообщить(ТекстИзPDF);   


5. Использование Apache PDFBox

 

Apache PDFBox — это библиотека на Java для работы с PDF. Она может быть использована в 1С через внешнюю компоненту на Java.


5.1. Установка и настройка

1. Скачивание библиотеки:

• Загрузите PDFBox с официального сайта Apache PDFBox.

• Получите JAR-файлы библиотеки.

2. Создание внешней компоненты:

• Разработайте Java-класс, который использует PDFBox для извлечения текста.

• Скомпилируйте класс в JAR-файл.

3. Использование в 1С:

• Подключите JAR-файл как внешнюю компоненту.

• Используйте Java-компоненту через встроенные возможности 1С: Предприятие.


5.2. Пример кода

Java-класс для извлечения текста:


import java.io.File;

import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.text.PDFTextStripper;

 

public class PDFTextExtractor {

    public String extractText(String pdfFilePath) throws IOException {

        PDDocument document = PDDocument.load(new File(pdfFilePath));

        PDFTextStripper stripper = new PDFTextStripper();

        String text = stripper.getText(document);

        document.close();

        return text;

    }

}


Использование в 1С:


import java.io.File;

import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.text.PDFTextStripper;

 

public class PDFTextExtractor {

    public String extractText(String pdfFilePath) throws IOException {

        PDDocument document = PDDocument.load(new File(pdfFilePath));

        PDFTextStripper stripper = new PDFTextStripper();

        String text = stripper.getText(document);

        document.close();

        return text;

    }

}   

6. Реализация на чистом языке 1С: Предприятие

 

Поскольку система программы 1С: Предприятие не имеет встроенных функций для работы с PDF, реализация на чистом языке затруднена. Однако можно попробовать использовать системные библиотеки Windows через COM-объекты, хотя возможности ограничены и не всегда надежны.


Пример использования библиотеки Microsoft Office:

Некоторые PDF-файлы могут быть преобразованы в текстовые форматы с помощью Word.


// Создаем COM-объект Word

WordApp = Новый COMОбъект("Word.Application");

 

// Открываем PDF-файл в Word

ДокументWord = WordApp.Documents.Open("C:\Documents\example.pdf", "False", "False", "False", , , , , , , , "False");

 

// Сохраняем документ как текст

ДокументWord.SaveAs2("C:\Documents\example.txt", 2); // 2 — формат txt

 

// Закрываем документ

ДокументWord.Close();

 

// Закрываем приложение

WordApp.Quit();

 

// Читаем текстовый файл

ТекстИзPDF = Новый ТекстовыйДокумент;

ТекстИзPDF.Прочитать("C:\Documents\example.txt");

 

// Вывод результата

Сообщить(ТекстИзPDF.ПолучитьТекст());


Важно: Этот метод зависит от установленного Microsoft Office и не всегда гарантирует корректное извлечение текста.   


7. Использование сервисов распознавания текста (OCR)

 

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

7.1. Когда это необходимо

Сканированные документы: Содержат изображения страниц, а не текст.
Файлы с невыделяемым текстом: Некоторые PDF имеют текст в виде изображений.

7.2. Примеры сервисов

Tesseract OCR: Открытое ПО для распознавания текста.
ABBYY Cloud OCR SDK: Коммерческий облачный сервис.
Google Cloud Vision API: Облачный сервис от Google.

Использование Tesseract OCR:

1. Установка Tesseract OCR:

- Скачайте и установите Tesseract OCR с официального сайта.


2. Использование в 1С:

- Через командную строку вызывайте Tesseract для распознавания текста в изображениях страниц PDF.


Пример вызова Tesseract из 1С:


// Путь к Tesseract

ПутьКTesseract = "C:\Program Files\Tesseract-OCR\tesseract.exe";

 

// Команда для извлечения текста

Команда = ПутьКTesseract + " " + "C:\Documents\example.tif" + " " + "C:\Documents\output";

 

// Запуск процесса

Процесс = Новый Процесс;

Процесс.Открыть(Команда);

 

// Ожидание завершения

Процесс.ЖдатьЗавершения();

 

// Чтение результата

ТекстИзPDF = Новый ТекстовыйДокумент;

ТекстИзPDF.Прочитать("C:\Documents\output.txt");

 

// Вывод результата

Сообщить(ТекстИзPDF.ПолучитьТекст());


Примечание: Перед использованием OCR убедитесь в соблюдении лицензии и условий использования выбранного сервиса.


Практические рекомендации:

Выбор метода: Определите тип PDF-файлов, с которыми вы работаете (текстовые или сканированные).
Обработка ошибок: Реализуйте обработку исключений и ошибок (защищенные файлы, некорректный формат).
Производительность: При больших объемах данных позаботьтесь об оптимизации кода и использованию потоковой обработки.
Тестирование: Тщательно протестируйте решение на различных PDF-файлах для обеспечения надежности.
Лицензии: Обратите внимание на лицензионные ограничения используемых библиотек и сервисов

Заключение:

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

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

     

Специалист компании ООО "Кодерлайн"

Егор Баукин

Наши проекты

АО «Вертолетная сервисная компания»
АО «Вертолетная сервисная компания»

Отрасль:
МТО эксплуатации вертолетной техники

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Консультации по сложным вопросам налогового и бухгалтерского учета;
- Ра...

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

Внедренное типовое решение:
1С:Управление строительной организацией

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад ...

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП

Проведение серии интервью с руководством и ключевыми специалистами Разраб...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО «Союз Три» (Кондитерский дом Renardi)
ООО «Союз Три»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Бухгалтерский учет
- Банк и касса
- Расчеты с контрагентами
Налоговый ...

ОАО «Фаберлик»
ОАО «Фаберлик»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление производственным предприятием 2

- Регламентированный учет;
- Кадровый учет;...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка час...

ПАО «АрселорМиттал Кривой Рог»
ПАО «АрселорМиттал Кривой Рог»

Отрасль:
Металлургическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием для Украины

- Кадровый учет
- Расчет зарплаты
- Регламентированная отчетность
- Уч...

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Производственные операции
Автоматизация бизнес-процессов...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение