Procházet zdrojové kódy

fix: 适配 MinerU API 调用逻辑并移除投资估算类型的自动切割预处理

- 在 config.yaml 和 config.py 中新增 table_enable, formula_enable 和 server_url 配置项
- 将默认后端切换为 vlm-http-client 并对齐 curl 测试参数 (return_middle_json=true 等)
- 移除 api/main.py 中针对投资估算类型的 PDF 自动切割逻辑,改为发送完整文件以保证表格识别效果
- 确保 api/main.py 中的转换调用使用统一的配置开关而非硬编码

Co-authored-by: Cursor <cursoragent@cursor.com>
何文松 před 2 týdny
rodič
revize
96efa2f607

+ 13 - 9
pdf_converter_v2/api/main.py

@@ -35,6 +35,7 @@ try:
         DEFAULT_END_PAGE_ID, DEFAULT_LANGUAGE, DEFAULT_RESPONSE_FORMAT_ZIP,
         DEFAULT_RETURN_MIDDLE_JSON, DEFAULT_RETURN_MODEL_OUTPUT, DEFAULT_RETURN_MD,
         DEFAULT_RETURN_IMAGES, DEFAULT_RETURN_CONTENT_LIST, DEFAULT_SERVER_URL,
+        DEFAULT_TABLE_ENABLE, DEFAULT_FORMULA_ENABLE,
         LOG_DIR, LOG_LEVEL
     )
 except ImportError:
@@ -47,15 +48,17 @@ except ImportError:
     DEFAULT_BACKEND = "vlm-vllm-async-engine"
     DEFAULT_PARSE_METHOD = "auto"
     DEFAULT_START_PAGE_ID = 0
-    DEFAULT_END_PAGE_ID = 99999
+    DEFAULT_END_PAGE_ID = -1
     DEFAULT_LANGUAGE = "ch"
     DEFAULT_RESPONSE_FORMAT_ZIP = True
-    DEFAULT_RETURN_MIDDLE_JSON = False
-    DEFAULT_RETURN_MODEL_OUTPUT = True
+    DEFAULT_RETURN_MIDDLE_JSON = True
+    DEFAULT_RETURN_MODEL_OUTPUT = False
     DEFAULT_RETURN_MD = True
     DEFAULT_RETURN_IMAGES = True
-    DEFAULT_RETURN_CONTENT_LIST = False
-    DEFAULT_SERVER_URL = "string"
+    DEFAULT_RETURN_CONTENT_LIST = True
+    DEFAULT_SERVER_URL = ""
+    DEFAULT_TABLE_ENABLE = True
+    DEFAULT_FORMULA_ENABLE = True
     LOG_DIR = "./logs"
     LOG_LEVEL = "INFO"
 
@@ -379,6 +382,7 @@ async def process_conversion_task(
                 logger.warning(f"[任务 {task_id}] 将使用原始文件继续处理")
             
             logger.info(f"[任务 {task_id}] 附件页切割状态: {'成功' if attachment_split_success else '失败/跳过'},使用文件: {file_path}")
+            """
         
         # 针对结算报告 / 初设评审类文档,检查是否有文本层
         # 如果有文本层,直接执行表格提取,不调用外部 OCR API(速度更快)
@@ -456,8 +460,8 @@ async def process_conversion_task(
                     input_file=file_path,
                     output_dir=output_dir,
                     is_ocr=True,  # 启用 OCR
-                    formula_enable=True,
-                    table_enable=True,
+                    formula_enable=DEFAULT_FORMULA_ENABLE,
+                    table_enable=DEFAULT_TABLE_ENABLE,
                     language=DEFAULT_LANGUAGE,
                     backend=DEFAULT_BACKEND,
                     url=None,
@@ -490,8 +494,8 @@ async def process_conversion_task(
                 output_dir=output_dir,
                 # v2: 去除max_pages、公式/表格等前端可调参数
                 is_ocr=False,
-                formula_enable=True,
-                table_enable=True,
+                formula_enable=DEFAULT_FORMULA_ENABLE,
+                table_enable=DEFAULT_TABLE_ENABLE,
                 language=DEFAULT_LANGUAGE,
                 backend=DEFAULT_BACKEND,
                 url=None,

+ 3 - 1
pdf_converter_v2/config.py

@@ -35,7 +35,9 @@ DEFAULT_RETURN_MODEL_OUTPUT = _config.get_bool("return_model_output", False)
 DEFAULT_RETURN_MD = _config.get_bool("return_md", True)
 DEFAULT_RETURN_IMAGES = _config.get_bool("return_images", True)
 DEFAULT_RETURN_CONTENT_LIST = _config.get_bool("return_content_list", True)
-DEFAULT_SERVER_URL = os.getenv("SERVER_URL", "")
+DEFAULT_SERVER_URL = _config.get_str("server_url", "")
+DEFAULT_TABLE_ENABLE = _config.get_bool("table_enable", True)
+DEFAULT_FORMULA_ENABLE = _config.get_bool("formula_enable", True)
 
 # PaddleOCR 配置
 PADDLEOCR_CMD = _config.get_str("paddleocr_cmd", "paddleocr")

+ 11 - 2
pdf_converter_v2/config.yaml

@@ -26,8 +26,8 @@ default_max_pages: 10
 # MinerU API 服务地址
 api_url: "http://172.17.0.1:5282"
 
-# 处理后端:vlm-vllm-async-engine / pipeline
-backend: "pipeline"
+# 处理后端:vlm-vllm-async-engine / pipeline / vlm-http-client
+backend: "vlm-http-client"
 
 # 解析方法:auto / txt / ocr
 parse_method: "auto"
@@ -41,6 +41,15 @@ end_page_id: -1
 # 识别语言:ch / en
 language: "ch"
 
+# 服务器URL (用于 vlm-http-client 后端)
+server_url: "http://172.17.0.1:30000"
+
+# 是否启用表格识别
+table_enable: true
+
+# 是否启用公式识别
+formula_enable: true
+
 # =============================================================================
 # API 服务启动配置
 # =============================================================================