|
@@ -9,7 +9,7 @@ from copy import deepcopy
|
|
|
from PIL import Image
|
|
from PIL import Image
|
|
|
|
|
|
|
|
from ..utils.logging_config import get_logger
|
|
from ..utils.logging_config import get_logger
|
|
|
-from ..utils.paddleocr_fallback import fallback_parse_with_paddleocr, call_paddleocr
|
|
|
|
|
|
|
+from ..utils.paddleocr_fallback import fallback_parse_with_paddleocr, call_paddleocr, has_recognition_garbage
|
|
|
from .document_type import detect_document_type
|
|
from .document_type import detect_document_type
|
|
|
from .noise_parser import parse_noise_detection_record
|
|
from .noise_parser import parse_noise_detection_record
|
|
|
from .electromagnetic_parser import parse_electromagnetic_detection_record
|
|
from .electromagnetic_parser import parse_electromagnetic_detection_record
|
|
@@ -195,6 +195,24 @@ def parse_markdown_to_json(markdown_content: str, first_page_image: Optional[Ima
|
|
|
input_file: 原始输入文件路径(PDF或图片),用于从PDF提取第一页
|
|
input_file: 原始输入文件路径(PDF或图片),用于从PDF提取第一页
|
|
|
"""
|
|
"""
|
|
|
original_markdown = markdown_content
|
|
original_markdown = markdown_content
|
|
|
|
|
+
|
|
|
|
|
+ # 若检测到 MinerU 识别异常(如表格单元格内同一字符大量重复),用 Paddle doc_parser 结果替换后再解析
|
|
|
|
|
+ if enable_paddleocr_fallback and (output_dir or input_file) and has_recognition_garbage(markdown_content):
|
|
|
|
|
+ logger.warning("[JSON转换] 检测到MinerU识别异常(如重复字符),尝试使用Paddle doc_parser补充替换")
|
|
|
|
|
+ try:
|
|
|
|
|
+ fallback_markdown = fallback_parse_with_paddleocr(
|
|
|
|
|
+ json_data={"document_type": forced_document_type or "electromagneticTestRecord"},
|
|
|
|
|
+ markdown_content=markdown_content,
|
|
|
|
|
+ output_dir=output_dir,
|
|
|
|
|
+ document_type=forced_document_type,
|
|
|
|
|
+ input_file=input_file,
|
|
|
|
|
+ )
|
|
|
|
|
+ if fallback_markdown:
|
|
|
|
|
+ markdown_content = fallback_markdown
|
|
|
|
|
+ original_markdown = markdown_content
|
|
|
|
|
+ logger.info("[JSON转换] 已用Paddle doc_parser结果替换Markdown,继续解析")
|
|
|
|
|
+ except Exception as e:
|
|
|
|
|
+ logger.warning(f"[JSON转换] Paddle doc_parser补充替换失败,继续使用原Markdown: {e}")
|
|
|
|
|
|
|
|
logger.info(f"[JSON转换] 开始解析,forced_document_type={forced_document_type}")
|
|
logger.info(f"[JSON转换] 开始解析,forced_document_type={forced_document_type}")
|
|
|
|
|
|