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

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

Метод 1: библиотека PyPDF2 (Python)
PyPDF2 — популярная библиотека Python, которая позволяет извлекать данные из файлов PDF. Чтобы извлечь данные формы с помощью PyPDF2, выполните следующие действия:

import PyPDF2
def extract_form_data(pdf_path):
    pdf = PyPDF2.PdfFileReader(pdf_path)
    form = pdf.getFormTextFields()
    data = {}
    for field in form:
        data[field] = form[field].value
    return data
# Usage example
pdf_path = "example.pdf"
extracted_data = extract_form_data(pdf_path)
print(extracted_data)

Метод 2: библиотека iText (Java)
iText — это библиотека Java, предоставляющая широкие возможности манипулирования PDF-файлами. Вот пример использования iText для извлечения данных формы из файла PDF:

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
public class PDFFormExtractor {
    public static void main(String[] args) {
        String pdfPath = "example.pdf";
        try (PdfReader reader = new PdfReader(pdfPath);
             PdfDocument document = new PdfDocument(reader)) {
            PdfAcroForm form = PdfAcroForm.getAcroForm(document, true);
            form.flattenFields();
            for (PdfFormField field : form.getFormFields().values()) {
                System.out.println(field.getFieldName() + ": " + field.getValueAsString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Метод 3: библиотека pdftools (R)
Если вы предпочитаете работать с R, пакет pdftools предоставляет удобный способ извлечения данных из PDF-формы. Вот пример:

library(pdftools)
pdf_path <- "example.pdf"
form_data <- pdf_form_fields(pdf_path)
extracted_data <- lapply(form_data, function(field) {
  field$name <- field$name
  field$value <- field$value
  return(field)
})
print(extracted_data)

Метод 4: библиотека таблиц (Python)
Если ваша PDF-форма содержит табличные данные, Tabula — это полезная библиотека Python для извлечения таблиц. Вот пример:

import tabula
def extract_table_data(pdf_path):
    tables = tabula.read_pdf(pdf_path, pages='all')
    return tables
# Usage example
pdf_path = "example.pdf"
extracted_tables = extract_table_data(pdf_path)
print(extracted_tables)

В этой статье мы рассмотрели несколько методов программного извлечения данных из PDF-форм. Мы рассмотрели библиотеки PyPDF2 и iText для извлечения общих форм, pdftools для пользователей R и Tabula для извлечения табличных данных. В зависимости от предпочитаемого вами языка программирования и конкретных требований вы можете выбрать наиболее подходящий метод для эффективного извлечения данных из PDF-форм.