import os import requests import json # Адрес вашего сервера с поднятым Docker-контейнером Unstructured API_URL = "http://172.16.80.250:9000/general/v0/general" def main(): # 1. Ищем все файлы .pdf и .docx в текущей директории target_files = [f for f in os.listdir('.') if f.lower().endswith(('.pdf', '.docx'))] target_files.sort() # Для порядка if not target_files: print("❌ В текущей папке не найдено ни одного PDF или DOCX файла.") return print(f"📂 Найдено файлов для обработки: {len(target_files)}") # 2. Проходимся по всем найденным файлам for target_file in target_files: print(f"\n📄 Обрабатывается файл: {target_file}") print(f"⏳ Отправляем на сервер {API_URL}... (это может занять время)") # Настройки запроса (параметры PDF просто игнорируются сервером для DOCX) payload_data = { "strategy": "hi_res", "languages": ["rus"], "pdf_infer_table_structure": "true" } # Определяем правильный MIME-тип для файла ext = target_file.lower().split('.')[-1] if ext == 'pdf': mime_type = "application/pdf" else: mime_type = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" # 3. Открываем файл и делаем POST-запрос try: with open(target_file, "rb") as f: files = { "files": (target_file, f, mime_type) } # Таймаут 300 секунд response = requests.post(API_URL, files=files, data=payload_data, timeout=300) response.raise_for_status() # 4. Получаем JSON и сохраняем его в файл parsed_data = response.json() output_filename = f"{os.path.splitext(target_file)[0]}_parsed.json" with open(output_filename, "w", encoding="utf-8") as out_f: json.dump(parsed_data, out_f, ensure_ascii=False, indent=4) print(f"✅ Готово! Результат успешно сохранен в файл: {output_filename}") except requests.exceptions.ConnectionError: print(f"❌ Ошибка соединения! Проверьте доступность {API_URL}") except requests.exceptions.Timeout: print("❌ Сервер слишком долго не отвечал.") except requests.exceptions.HTTPError as e: print(f"❌ Сервер вернул ошибку: {e}") if response.text: print(f"Детали ошибки от сервера: {response.text}") except Exception as e: print(f"❌ Произошла непредвиденная ошибка при обработке {target_file}: {e}") if __name__ == "__main__": main()