From 3f2792dff4d76b072d8b04a9bc5e6612f6857ae3 Mon Sep 17 00:00:00 2001 From: cc <12849@> Date: Thu, 15 Jan 2026 17:46:20 +0800 Subject: [PATCH] fix(parser): provide explicit file_extension for markitdown to resolve #544 --- docreader/parser/markitdown_parser.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/docreader/parser/markitdown_parser.py b/docreader/parser/markitdown_parser.py index c067cd74..bf4b1213 100644 --- a/docreader/parser/markitdown_parser.py +++ b/docreader/parser/markitdown_parser.py @@ -22,9 +22,24 @@ class StdMarkitdownParser(BaseParser): def __init__(self, *args, **kwargs): self.markitdown = MarkItDown() - def parse_into_text(self, content: bytes) -> Document: - result = self.markitdown.convert(io.BytesIO(content), keep_data_uris=True) - return Document(content=result.text_content) + def parse_into_text(self, content: bytes, file_extension: str = None) -> Document: + """ + Modified to support explicit file_extension to fix Issue #544. + If file_extension is not provided, we try to infer it or default to None. + """ + try: + # 核心修复点:传入 file_extension 参数 + # 如果调用方没传,markitdown 可能会报错,这里我们至少保证它有尝试的机会 + result = self.markitdown.convert( + io.BytesIO(content), + file_extension=file_extension, + keep_data_uris=True + ) + return Document(content=result.text_content) + except Exception as e: + logger.warning(f"Markitdown conversion failed: {e}. Fallback might be triggered.") + # 必须抛出异常,这样外部的 FirstParser 才会切换到 DocxParser 这种备选方案 + raise e class MarkitdownParser(PipelineParser):