fix(parser): provide explicit file_extension for markitdown to resolve #544

This commit is contained in:
cc
2026-01-15 17:46:20 +08:00
committed by begoniezhao
parent c399665a42
commit 3f2792dff4
+18 -3
View File
@@ -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):