|
|
| import openai
|
| from io import BytesIO
|
| import fitz
|
| import logging
|
|
|
| class AIChecker:
|
| @staticmethod
|
| def check_openai_connection(api_url: str, api_key: str, model: str, timeout: int = 10):
|
| """OpenAI连通性测试"""
|
| try:
|
| openai.api_key = api_key
|
| openai.base_url = api_url
|
|
|
|
|
| response = openai.chat.completions.create(
|
| model=model,
|
| messages=[{"role": "user", "content": "hi"}],
|
| timeout=timeout
|
| )
|
|
|
| return True, response.choices[0].message.content
|
| except Exception as e:
|
| logging.error(f"OpenAI连接测试失败: {str(e)}")
|
| return False, str(e)
|
|
|
| @staticmethod
|
| def check_pdf_scanned(file_stream: BytesIO):
|
| """PDF扫描件检测"""
|
| try:
|
| file_stream.seek(0)
|
| doc = fitz.open(stream=file_stream.read(), filetype="pdf")
|
| pages_to_check = min(5, len(doc))
|
|
|
| for page_num in range(pages_to_check):
|
| page = doc[page_num]
|
| if page.get_text().strip():
|
| return False
|
| if page.get_images():
|
| return True
|
| return False
|
| except Exception as e:
|
| logging.error(f"PDF检测失败: {str(e)}")
|
| raise
|
|
|