Skip to content

Commit 3889e97

Browse files
authored
fix(converter): preserve docx embedded images from markitdown (#163)
Fixes #162.
1 parent d1d3f4d commit 3889e97

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

openkb/converter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ def convert_document(
231231
markdown = convert_pdf_with_images(src, doc_name, images_dir)
232232
else:
233233
# Non-PDF, non-MD: use markitdown (docx, pptx, html, etc.)
234-
mid = MarkItDown()
234+
mid = MarkItDown(keep_data_uris=True)
235235
result = mid.convert(str(src))
236236
markdown = result.text_content
237237
markdown = extract_base64_images(markdown, doc_name, images_dir)

tests/test_converter.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,36 @@ def test_long_pdf_returns_is_long_doc(self, kb_dir, tmp_path):
131131
assert result.raw_path is not None
132132

133133

134+
# ---------------------------------------------------------------------------
135+
# convert_document — MarkItDown-backed formats
136+
# ---------------------------------------------------------------------------
137+
138+
139+
class TestConvertDocumentMarkItDown:
140+
def test_docx_conversion_enables_keep_data_uris(self, kb_dir, tmp_path):
141+
src = tmp_path / "report.docx"
142+
src.write_bytes(b"fake docx")
143+
144+
mock_result = MagicMock()
145+
mock_result.text_content = "![](data:image/png;base64,abc123)"
146+
147+
with (
148+
patch("openkb.converter.MarkItDown") as mock_markitdown,
149+
patch("openkb.converter.extract_base64_images", return_value="converted markdown") as mock_extract,
150+
):
151+
mock_markitdown.return_value.convert.return_value = mock_result
152+
153+
result = convert_document(src, kb_dir)
154+
155+
mock_markitdown.assert_called_once_with(keep_data_uris=True)
156+
mock_markitdown.return_value.convert.assert_called_once_with(str(src))
157+
mock_extract.assert_called_once()
158+
assert result.skipped is False
159+
assert result.is_long_doc is False
160+
assert result.source_path is not None
161+
assert result.source_path.read_text(encoding="utf-8") == "converted markdown"
162+
163+
134164
# ---------------------------------------------------------------------------
135165
# _registry_path
136166
# ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)