2026-06-30 13:35:52 +08:00

62 lines
2.0 KiB
Python

import httpx
import os
async def process_pdf_logic(pdf_file):
"""
接收 PDF 文件并转发到解析服务
"""
# 验证文件类型
if not pdf_file.content_type.startswith("application/pdf"):
raise Exception(400, "仅支持 PDF 文件")
try:
# 读取文件内容
# file_content = await pdf_file.read()
# 配置目标接口参数
target_url = os.getenv("Mineru_URL","http://172.18.30.122:9988")
target_url = target_url + "/analyze-pdf"
# target_url = os.getenv("Mineru_URL","http://172.18.127.124:9088/pdf_parse")
# target_url = "http://172.18.30.122:8998/pdf_parse"
# params = {
# "parse_method": "auto",
# "is_json_md_dump": "true",
# "output_dir": "output"
# }
# 构建文件上传格式
files = {
"file": (pdf_file.filename, pdf_file.file, "application/pdf")
# "pdf_file": (pdf_file.filename, pdf_file.file, "application/pdf")
}
# 发送请求到解析服务
async with httpx.AsyncClient(timeout=120.0) as client:
response = await client.post(
target_url,
# params=params,
files=files,
headers={"Accept": "application/json"}
)
response.raise_for_status()
result = response.json()
content_list = result["data"]["full_content"]
# markdown_content =""
# for content in content_list:
# text = content["text"]
return content_list
except httpx.RequestError as e:
raise Exception(503, f"无法连接到解析服务: {str(e)}")
except Exception as e:
raise Exception(500, f"服务器内部错误: {str(e)}")
if __name__ == "__main__":
# 测试:传入 PDF 文件路径
result = process_pdf_logic("邱茜茜.pdf")
print(result)
# with open("邱茜茜.md", "w", encoding="utf-8") as f:
# f.write(result)