#!/usr/bin/env python3
"""OCR Sadi 176-180 bằng Gemini 2.5 Pro"""

import os
import base64
from pathlib import Path

# Setup paths
WORKSPACE = Path("/opt/openclaw/.openclaw/workspace/Chuan Muc Sadi")
PDF_FILE = WORKSPACE / "Sadi-176-180.pdf"
OUTPUT_FILE = WORKSPACE / "extracted" / "Sadi-176-180-Gemini.md"

# Đọc PDF file và encode base64
with open(PDF_FILE, "rb") as f:
    pdf_bytes = f.read()
    pdf_base64 = base64.b64encode(pdf_bytes).decode('utf-8')

print(f"Đã đọc PDF: {len(pdf_bytes)} bytes")

# Tạo request cho Gemini API
import json

prompt = """Bạn là chuyên gia OCR văn bản Myanmar (Burmese) cổ trong kinh điển Phật giáo.

Nhiệm vụ: Trích xuất CHÍNH XÁC NGUYÊN VĂN (literal transcription) văn bản Myanmar từ PDF này.

YÊU CẦU QUAN TRỌNG:
1. GIỮ NGUYÊN TẤT CẢ ký tự Myanmar, kể cả lỗi lặp, ký tự cổ, không làm sạch
2. Không tự ý sửa lỗi chính tả
3. Giữ nguyên số trang, số dòng
4. Output theo format markdown với phân cách trang rõ ràng

Format output:
--- Trang 1 ---
[nội dung Myanmar]

--- Trang 2 ---
[nội dung Myanmar]

...

Hãy OCR toàn bộ 5 trang này."""

# Call Gemini API
import urllib.request
import urllib.error

api_key = os.environ.get("GEMINI_API_KEY")
if not api_key:
    print("Lỗi: Không tìm thấy GEMINI_API_KEY")
    exit(1)

url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent?key={api_key}"

request_body = {
    "contents": [{
        "parts": [
            {"text": prompt},
            {
                "inline_data": {
                    "mime_type": "application/pdf",
                    "data": pdf_base64
                }
            }
        ]
    }],
    "generationConfig": {
        "temperature": 0.1,
        "topP": 0.8,
        "topK": 16,
        "maxOutputTokens": 8192,
    }
}

data = json.dumps(request_body).encode('utf-8')
req = urllib.request.Request(
    url,
    data=data,
    headers={'Content-Type': 'application/json'}
)

print("Đang gọi Gemini API...")

try:
    with urllib.request.urlopen(req, timeout=300) as response:
        result = json.loads(response.read().decode('utf-8'))
        
        # Extract text
        if "candidates" in result and len(result["candidates"]) > 0:
            ocr_text = result["candidates"][0]["content"]["parts"][0]["text"]
            
            # Save to file
            with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
                f.write("# Sadi-176-180 (Raw OCR - Gemini 2.5 Pro)\n\n")
                f.write(ocr_text)
            
            print(f"✅ OCR hoàn thành! Đã lưu: {OUTPUT_FILE}")
            print(f"Số ký tự: {len(ocr_text)}")
        else:
            print("Lỗi: Không có kết quả từ Gemini")
            print(json.dumps(result, indent=2, ensure_ascii=False))
            
except urllib.error.HTTPError as e:
    print(f"Lỗi HTTP {e.code}: {e.read().decode('utf-8')}")
except Exception as e:
    print(f"Lỗi: {e}")
