Извлечение данных и OCR
Извлечение таблиц из PDF, OCR отсканированных документов и структурирование данных через Python в песочнице: распознавание текста, разбор счетов и актов, выгрузка результатов в CSV или Excel.
Извлечение данных и OCR
Этот skill содержит паттерны Python-кода для извлечения данных из документов в облаке. Загруженные файлы доступны в /tmp/.
Доступные библиотеки
Всё перечисленное уже стоит в образе облака:
pdfplumber: извлечение таблиц и текста из PDFpdf2image: конвертация PDF в изображенияPillow: обработка изображенийopenpyxl: создание Excel-файловpandas: обработка табличных данных
Набор образа фиксирован, и pip install его не расширяет (почему так не добыть pytesseract, сказано в БЛОКЕ 2).
БЛОК 2: Сканы и изображения
Распознаёт платформа, а не код в ячейке. pytesseract в облаке нет и добыть его нельзя: pip кладёт только обёртку, системного бинаря tesseract в образе не существует, и вызов упадёт TesseractNotFoundError уже после «успешной» установки. Ниже маршрут, который работает.
Шаг 1: проверь, распознано ли уже
Текст документа с текстовым слоем (PDF, DOCX, XLSX) платформа разбирает до первого ответа: он стоит в строке вложения вместе с отметкой полноты. У картинки текстового маршрута нет: её читает только analyze. Смотри строку вложения прежде, чем запускать OCR. В ячейке repl_execute те же вложения лежат в documents:
Текст на месте: распознавать нечего, иди сразу в БЛОК 4 (структурирование).
Пусто или PDF-скан? Вызывай инструмент:
document_ids: id документа из строки вложения (предпочтительно, стабилен между сессиями; в ячейкеrepl_executeтот же id лежит вdocuments[i]["id"]) либо путь из той же строки. Путь не конструируй сам и не переноси из прошлой сессии.- До 10 документов за вызов, распознаются параллельно.
pages=[1, 2, 3]: только для PDF и только когда документ один. БезpagesPDF больше 50 страниц-сканов не примет: режь на диапазоны страниц.- Форматы:
.png,.jpg,.jpeg,.pdf. Всё остальное не картинка: его текст уже стоит в строке вложения. - Распознанный текст закрепляется за документом, ответ инструмента несёт его начало и отметку полноты: повторный вызов на тот же документ вернёт сохранённое, не распознавая заново, а на следующем ходу текст стоит в строке вложения (в ячейке
repl_execute:documents[i]["text"]).
Предобработка (контраст, бинаризация, шумодав) не нужна: это рецепт для tesseract, а не для распознавания, которое делает платформа. Координат блоков и рамок слов этот маршрут не отдаёт: нужен разбор геометрии страницы, задавай вопрос об изображении через analyze(kind="describe", question=…).
Шаг 3: разбор уже в облаке
Дальше работает обычный код: текст из ответа инструмента (в ячейке repl_execute также 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: Работа с входными файлами
Паттерн: несколько сканов сразу
Пачка идёт одним вызовом инструмента (лимиты в БЛОКЕ 2, шаг 2):
id берутся из строк вложений, больше десяти режь на партии по 10. Собирать распознанное в ячейке не нужно: текст закреплён за каждым документом.
БЛОК 7: Комбинированные сценарии
Задача: PDF скан → OCR → Таблица в Excel
Шаг 1: распознавание инструментом (БЛОК 2):
Шаг 2: разбор в ячейке:
БЛОК 8: Типичные команды пользователя
| Команда | Действие |
|---|---|
| "Извлеки таблицы из PDF" | БЛОК 1: Извлечение всех таблиц |
| "Распознай скан" | БЛОК 2: сначала текст в строке вложения, затем analyze(kind="ocr") |
| "Вытащи текст из PDF" | БЛОК 3: Извлечение текста |
| "Найди реквизиты в документе" | БЛОК 4: Парсинг реквизитов |
| "Переведи скан в Excel" | БЛОК 7: PDF скан → OCR → Excel |
| "Извлеки суммы и даты" | БЛОК 4: Извлечение сумм и дат |
| "Обработай несколько файлов" | БЛОК 5: Batch-обработка |
Skill-файл содержит паттерны кода для извлечения данных из документов. Код с documents выполняется в ячейке repl_execute: в sandbox_bash этого имени нет.
Similar skills
Try this skill
Sign up and use the "Извлечение данных и OCR" skill for free.