import pytesseract
from PIL import Image
import os

def extract_text_from_image(image_path, lang='chi_sim+eng', use_ai=False, ai_provider='aliyun'):
    """从图片中提取文字（OCR）"""
    try:
        if use_ai:
            # 使用AI大模型进行OCR
            if ai_provider == 'aliyun':
                from .aliyun_ocr import extract_text_with_aliyun
                return extract_text_with_aliyun(image_path, 'general')
            else:
                raise Exception(f"不支持的AI提供商: {ai_provider}")
        else:
            # 使用传统的Tesseract OCR
            # 设置tesseract路径（如果需要）
            if os.name == 'nt':  # Windows系统
                pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
            
            # 打开并处理图片
            image = Image.open(image_path)
            
            # 使用OCR提取文字
            text = pytesseract.image_to_string(image, lang=lang)
            
            return text.strip()
    except Exception as e:
        raise Exception(f"图片文字识别失败: {str(e)}")

def extract_text_with_ai(image_path, provider='aliyun', ocr_type='general', options=None):
    """使用AI大模型进行图片文字识别"""
    try:
        if provider == 'aliyun':
            from .aliyun_ocr import extract_text_with_aliyun
            return extract_text_with_aliyun(image_path, ocr_type, options)
        else:
            raise Exception(f"不支持的AI提供商: {provider}")
    except Exception as e:
        raise Exception(f"AI OCR识别失败: {str(e)}")

def image_to_text_file(image_path, output_path):
    """将图片文字保存为文本文件"""
    try:
        text = extract_text_from_image(image_path)
        
        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(text)
        
        return True
    except Exception as e:
        raise Exception(f"图片转文本文件失败: {str(e)}")

def image_to_excel(image_path, output_path):
    """将图片文字保存为Excel文件"""
    try:
        import pandas as pd
        
        text = extract_text_from_image(image_path)
        
        # 按行分割文本
        lines = [line.strip() for line in text.split('\n') if line.strip()]
        
        # 创建DataFrame
        df = pd.DataFrame({
            '行号': range(1, len(lines) + 1),
            '内容': lines
        })
        
        df.to_excel(output_path, index=False)
        return True
    except Exception as e:
        raise Exception(f"图片转Excel失败: {str(e)}")