Извлечение данных и OCR
Извлечение таблиц из PDF, OCR отсканированных документов и структурирование данных через Python в песочнице: распознавание текста, разбор счетов и актов, выгрузка результатов в CSV или Excel.
Извлечение данных и OCR
Доступные библиотеки
pdfplumber— извлечение таблиц и текста из PDFpdf2image— конвертация PDF в изображенияPillow— обработка изображенийopenpyxl— создание Excel-файловpandas— обработка табличных данных
БЛОК 2: Сканы и изображения
Шаг 1: проверь, распознано ли уже
Текст на месте — распознавать нечего, иди сразу в БЛОК 4 (структурирование).
Пусто или PDF-скан — вызывай инструмент:
Предобработка (контраст, бинаризация, шумодав) не нужна — это рецепт для tesseract, а не для распознавания, которое делает платформа. Координат блоков и рамок слов этот маршрут не отдаёт: нужен разбор геометрии страницы — задавай вопрос об изображении через analyze(kind="describe", question=…).
Дальше работает обычный код: текст из ответа инструмента (или из documents[i]["text"]) обрабатывается паттернами БЛОКА 4 (реквизиты, суммы, даты) и БЛОКА 6 (экспорт в Excel).
БЛОК 4: Структурирование данных
Паттерн: Дата заключения договора и срок оплаты
Для электронных договоров датой заключения обычно считается дата подписания ЭЦП последней стороной (она может отличаться от даты в шапке): тогда base_iso бери из даты ЭЦП, а не из find_contract_date. find_payment_term различает «рабочих» и «календарных» дней; payment_deadline считает рабочие дни через add_business_days.
Не форматируй даты через strftime с локалью. date.strftime("%d.%m.%Y", "ru") падает с TypeError: strftime() takes at most 1 argument (2 given) — у date/datetime метод принимает только строку формата. Русский день недели бери из RU_WEEKDAYS[d.weekday()], а не из strftime("%A").
БЛОК 5: Работа с входными файлами
Паттерн: несколько сканов сразу
Пачка идёт одним вызовом инструмента — до 10 документов, распознаются параллельно:
Больше десяти — режь на партии по 10. Собирать распознанное в ячейке уже не нужно: текст закреплён за каждым документом и на следующем ходу доступен как documents[i]["text"].
БЛОК 7: Комбинированные сценарии
Задача: PDF скан → OCR → Таблица в Excel
Шаг 1 — распознавание инструментом (страницы можно сузить, документ при этом один):
Шаг 2 — разбор в ячейке:
БЛОК 8: Типичные команды пользователя
| Команда | Действие |
|---|---|
| "Извлеки таблицы из PDF" | БЛОК 1: Извлечение всех таблиц |
| "Распознай скан" | БЛОК 2: сначала documents[i]['text'], затем analyze(kind="ocr") |
| "Вытащи текст из PDF" | БЛОК 3: Извлечение текста |
| "Найди реквизиты в документе" | БЛОК 4: Парсинг реквизитов |
| "Переведи скан в Excel" | БЛОК 7: PDF скан → OCR → Excel |
| "Извлеки суммы и даты" | БЛОК 4: Извлечение сумм и дат |
| "Обработай несколько файлов" | БЛОК 5: Batch-обработка |
Похожие навыки
Попробуйте этот навык
Зарегистрируйтесь и используйте навык «Извлечение данных и OCR» бесплатно.