From 93130b5ba5b055251a285f9cd055be190f672cb2 Mon Sep 17 00:00:00 2001 From: sakasegawa Date: Sun, 15 Dec 2024 20:42:55 +0900 Subject: [PATCH] Add PPTX chart support --- src/markitdown/_markitdown.py | 32 ++++++++++++++++++++++++++++++++ tests/test_files/test.pptx | Bin 118550 -> 124277 bytes tests/test_markitdown.py | 2 ++ 3 files changed, 34 insertions(+) mode change 100755 => 100644 tests/test_files/test.pptx diff --git a/src/markitdown/_markitdown.py b/src/markitdown/_markitdown.py index 96997cf..17c9dab 100644 --- a/src/markitdown/_markitdown.py +++ b/src/markitdown/_markitdown.py @@ -582,6 +582,11 @@ class PptxConverter(HtmlConverter): "\n" + self._convert(html_table).text_content.strip() + "\n" ) + # Charts + if shape.has_chart: + md_content += self._convert_chart_to_markdown(shape.chart) + + # Text areas elif shape.has_text_frame: if shape == title: @@ -616,6 +621,33 @@ class PptxConverter(HtmlConverter): return True return False + def _is_chart(self, shape): + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.CHART: + return True + return False + + def _convert_chart_to_markdown(self, chart): + md = "\n\n### Chart" + if chart.has_title: + md += f": {chart.chart_title.text_frame.text}" + md += "\n\n" + data = [] + category_names = [c.label for c in chart.plots[0].categories] + series_names = [s.name for s in chart.series] + data.append(["Category"] + series_names) + + for idx, category in enumerate(category_names): + row = [category] + for series in chart.series: + row.append(series.values[idx]) + data.append(row) + + markdown_table = [] + for row in data: + markdown_table.append("| " + " | ".join(map(str, row)) + " |") + header = markdown_table[0] + separator = "|" + "|".join(["---"] * len(data[0])) + "|" + return md + "\n".join([header, separator] + markdown_table[1:]) class MediaConverter(DocumentConverter): """ diff --git a/tests/test_files/test.pptx b/tests/test_files/test.pptx old mode 100755 new mode 100644 index 35eabf4b4c5431a9e6cbb0eb8f4e17ac3c0dbdcb..ea1bbcb0f84f4e1007be35f2262173529215e484 GIT binary patch delta 25706 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 CYFc{$ diff --git a/tests/test_markitdown.py b/tests/test_markitdown.py index 94fd886..ee08300 100644 --- a/tests/test_markitdown.py +++ b/tests/test_markitdown.py @@ -57,6 +57,8 @@ PPTX_TEST_STRINGS = [ "44bf7d06-5e7a-4a40-a2e1-a2e42ef28c8a", "1b92870d-e3b5-4e65-8153-919f4ff45592", "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation", + "a3f6004b-6f4f-4ea8-bee3-3741f4dc385f", # chart title + "2003", # chart value ] BLOG_TEST_URL = "https://microsoft.github.io/autogen/blog/2023/04/21/LLM-tuning-math"