55 lines
2.1 KiB
Python
55 lines
2.1 KiB
Python
import os
|
||
import json
|
||
import base64
|
||
import google.generativeai as genai
|
||
from pathlib import Path
|
||
|
||
# Конфигурация API
|
||
genai.configure(api_key=os.environ.get("GOOGLE_API_KEY"))
|
||
|
||
def analyze_evidence(image_path):
|
||
"""
|
||
Использует Gemini 2.0 Flash для извлечения метаданных из скриншота ГИС ЖКХ.
|
||
"""
|
||
if not os.environ.get("GOOGLE_API_KEY"):
|
||
return {"error": "API Key missing"}
|
||
|
||
model = genai.GenerativeModel('gemini-2.0-flash')
|
||
|
||
with open(image_path, "rb") as f:
|
||
image_data = f.read()
|
||
|
||
prompt = """
|
||
Проанализируй этот скриншот личного кабинета ГИС ЖКХ.
|
||
Тебе нужно извлечь следующие данные в формате JSON:
|
||
{
|
||
"number": "номер обращения/дела",
|
||
"date": "дата опубликования или создания",
|
||
"time": "время",
|
||
"status": "текущий статус обращения",
|
||
"sender": "от кого",
|
||
"recipient": "кому"
|
||
}
|
||
Если какой-то из параметров не найден, напиши "null".
|
||
Ответ дай ТОЛЬКО в формате чистого JSON без лишнего текста.
|
||
"""
|
||
|
||
try:
|
||
response = model.generate_content([
|
||
prompt,
|
||
{'mime_type': 'image/png', 'data': image_data}
|
||
])
|
||
# Очистка от возможных ```json ... ```
|
||
clean_text = response.text.replace('```json', '').replace('```', '').strip()
|
||
return json.loads(clean_text)
|
||
except Exception as e:
|
||
print(f"Ошибка парсинга ответа Gemini: {e}")
|
||
return None
|
||
|
||
if __name__ == "__main__":
|
||
# Тестовый запуск на первом попавшемся скрине
|
||
# Путь скорректирован для сервера
|
||
test_path = "/volume1/web/legal/gis/raw/73-2026-14124/evidence.png"
|
||
if os.path.exists(test_path):
|
||
result = analyze_evidence(test_path)
|
||
print(json.dumps(result, indent=2, ensure_ascii=False))
|