#!/usr/bin/env python3
"""
OCR từng trang Sadi-191-195 sử dụng Qwen VL 3.5 397B qua OpenRouter API
Xử lý từng trang một để dễ debug
"""

import os
import base64
import requests
import sys

# Cấu hình
PAGE_NUM = int(sys.argv[1]) if len(sys.argv) > 1 else 1
PDF_NAME = "Sadi-191-195"
WORKSPACE = "/opt/openclaw/.openclaw/workspace/Chuan Muc Sadi"
API_KEY = os.environ.get("OPENROUTER_API_KEY")

if not API_KEY:
    print("❌ Thiếu OPENROUTER_API_KEY")
    exit(1)

page_path = f"{WORKSPACE}/sadi_page-{PAGE_NUM}.png"
if not os.path.exists(page_path):
    print(f"❌ Không tìm thấy trang {PAGE_NUM}")
    exit(1)

print(f"📄 OCR trang {PAGE_NUM}: {os.path.basename(page_path)}")

# Mã hóa ảnh
with open(page_path, "rb") as f:
    base64_image = base64.b64encode(f.read()).decode("utf-8")

print(f"📊 Kích thước ảnh base64: {len(base64_image)} ký tự")

# Gửi request
headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
    "HTTP-Referer": "https://openclaw.ai",
    "X-Title": "OpenClaw OCR Myanmar"
}

prompt = f"""Hãy OCR trang {PAGE_NUM} này. Trích xuất CHÍNH XÁC NGUYÊN VĂN (literal transcription) toàn bộ văn bản Myanmar từ ảnh chụp trang sách Phật giáo.

QUY TẮC:
1. Giữ nguyên mọi ký tự, kể cả lỗi in ấn, ký tự cổ
2. Không thêm markdown formatting
3. Đọc từ trên xuống dưới, trái sang phải
4. Output thuần văn bản Myanmar

Bắt đầu bằng "--- TRANG {PAGE_NUM} ---" và kết thúc bằng "--- HẾT TRANG {PAGE_NUM} ---"
"""

payload = {
    "model": "qwen/qwen3.5-397b-a17b",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": prompt},
                {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}}
            ]
        }
    ],
    "max_tokens": 4096,
    "temperature": 0.1
}

print("🔄 Đang gửi request đến OpenRouter API...")

try:
    response = requests.post(
        "https://openrouter.ai/api/v1/chat/completions",
        headers=headers,
        json=payload,
        timeout=180
    )
    
    if response.status_code == 200:
        result = response.json()
        content = result["choices"][0]["message"]["content"]
        print(f"✅ Hoàn thành trang {PAGE_NUM}")
        print(f"📊 Số ký tự: {len(content)}")
        print("\n" + "="*50)
        print(content)
        print("="*50)
    else:
        print(f"❌ Lỗi API: {response.status_code}")
        print(response.text)
        exit(1)
        
except Exception as e:
    print(f"❌ Ngoại lệ: {str(e)}")
    exit(1)
