"""测试 RapidOCR 从PDF截图中提取文字"""
import sys, os, re
sys.path.insert(0, os.path.expanduser("~/gov_crawler/venv/lib/python3.9/site-packages"))

# 生成更像PDF截图的测试图（带中文+数字混合, 不同字体大小）
from PIL import Image, ImageDraw, ImageFont
import random

def make_realistic_pdf_screenshot(save_path="/tmp/pdf_screenshot_test.png"):
    """模拟政府PDF的截图效果——图片形式的联系方式"""
    w, h = 800, 500
    img = Image.new("RGB", (w, h), "#f5f5f5")
    draw = ImageDraw.Draw(img)
    
    # 尝试多种字体
    font_big = None
    font_normal = None
    for p in ["/System/Library/Fonts/PingFang.ttc", 
              "/System/Library/Fonts/Supplemental/Songti.ttc"]:
        if os.path.exists(p):
            font_big = ImageFont.truetype(p, 22)
            font_normal = ImageFont.truetype(p, 18)
            break
    if not font_big:
        font_big = ImageFont.load_default()
        font_normal = ImageFont.load_default()
    
    lines = [
        ("企业基本信息", font_big, "#1a1a1a"),
        ("", None, None),
        ("企业名称：浙江联化昂健医药科技有限公司", font_normal, "#333"),
        ("统一社会信用代码：91331082MA2XXXXXXX", font_normal, "#333"),
        ("法定代表人：张建国", font_normal, "#333"),
        ("注册资本：10000万元人民币", font_normal, "#333"),
        ("成立日期：2021-06-18", font_normal, "#333"),
        ("联系方式：0576-88886666", font_normal, "#d00"),
        ("手机：13906543210", font_normal, "#d00"),
        ("", None, None),
        ("项目信息", font_big, "#1a1a1a"),
        ("项目名称：年产2000吨高端医药中间体项目", font_normal, "#333"),
        ("建设地点：浙江省台州市化学原料药基地", font_normal, "#333"),
        ("项目代码：2025-331000-27-03-123456", font_normal, "#333"),
    ]
    
    y = 20
    for text, font, color in lines:
        if text:
            draw.text((30, y), text, fill=color, font=font)
        y += 32
    
    img.save(save_path)
    print(f"[生成] {save_path} ({w}x{h})")
    return save_path

# OCR识别
from rapidocr_onnxruntime import RapidOCR

def test_ocr(img_path):
    ocr = RapidOCR()
    result, elapse = ocr(img_path)
    
    if result is None:
        print("[OCR] 未识别到任何文字")
        return
    
    elapse_total = sum(elapse) if elapse else 0
    print(f"\n[OCR 结果] ({len(result)} 个文本块, 耗时 {elapse_total:.2f}s)")
    
    all_text = []
    for box, text, score in result:
        all_text.append(text)
        print(f"  [{score:.3f}] {text}")
    
    full_text = "\n".join(all_text)
    
    # 提取电话
    phones = re.findall(r'1[3-9]\d{9}', full_text)
    landlines = re.findall(r'0\d{2,3}-?\d{7,8}', full_text)
    if phones:
        print(f"\n📱 手机: {', '.join(phones)}")
    if landlines:
        print(f"📞 座机: {', '.join(landlines)}")
    
    # 提取信用代码
    credit = re.findall(r'[0-9A-Z]{18}', full_text)
    if credit:
        print(f"🆔 信用代码: {credit[0]}")
    
    return all_text

if __name__ == "__main__":
    img = make_realistic_pdf_screenshot()
    test_ocr(img)
