#!/usr/bin/env python3 """ Комбинированный парсинг ПОЛ-177: - Текст: Unstructured API (192.168.1.103:8005) - Таблицы: pypdf (локально) Сохраняет результат в /opt/okf-regulations/concepts/pol177_parsed.json """ import json import subprocess from pathlib import Path # === НАСТРОЙКИ === UNSTRUCTURED_API = "http://192.168.1.103:8005/general/v0/general" PDF_PATH = "/opt/documents_xk/АОХКСибцем/07 Служба Вице-президента по экономике и финансам/ДИТ/02 Регламенты деятельности/10 Положение Хранение электронных документов от 03.04.2024 № ПОЛ-177.pdf" OUTPUT_PATH = "/opt/okf-regulations/concepts/pol177_parsed.json" def fetch_unstructured(pdf_path: str) -> list[dict]: """Получаем элементы текста из Unstructured API (103).""" cmd = [ "curl", "-X", "POST", UNSTRUCTURED_API, "-F", f"files=@{pdf_path}", "-F", "strategy=fast", "-F", "output_format=json", ] result = subprocess.run(cmd, capture_output=True, text=True) if result.returncode != 0: print(f"❌ Unstructured API error: {result.stderr}") return [] return json.loads(result.stdout) def extract_tables_pypdf(pdf_path: str) -> list[dict]: """Извлекаем таблицы через pypdf (локально на 106).""" try: from pypdf import PdfReader except ImportError: import subprocess subprocess.run(["pip3", "install", "pypdf", "--user"], check=True) from pypdf import PdfReader reader = PdfReader(pdf_path) tables = [] for i, page in enumerate(reader.pages): text = page.extract_text() if text and ("таблица" in text.lower() or "стр" in text.lower()): tables.append({"page": i + 1, "text": text}) return tables def main(): print("=" * 60) print("📄 Парсинг ПОЛ-177") print("=" * 60) # 1. Текст через Unstructured API print("\n[1/2] Запрос текста через Unstructured API (103)...") elements = fetch_unstructured(PDF_PATH) print(f" ✅ Получено {len(elements)} элементов") # 2. Таблицы через pypdf print("\n[2/2] Извлечение таблиц через pypdf (106)...") tables = extract_tables_pypdf(PDF_PATH) print(f" ✅ Найдено {len(tables)} страниц с текстом") # 3. Сохраняем комбинированный результат result = { "document": "ПОЛ-177", "title": "Положение Хранение электронных документов от 03.04.2024 № ПОЛ-177", "unstructured": elements, "tables": tables, "metadata": { "unstructured_api": UNSTRUCTURED_API, "strategy": "fast", "timestamp": "2026-07-06", }, } Path(OUTPUT_PATH).write_text(json.dumps(result, ensure_ascii=False, indent=2)) print(f"\n✅ Сохранено в {OUTPUT_PATH}") print("=" * 60) if __name__ == "__main__": main()