From eedf1c4b398a4b78b9425bce17ef56ebbad55eec Mon Sep 17 00:00:00 2001 From: julio Almeida Date: Wed, 22 Jan 2025 15:02:35 +0400 Subject: [PATCH] MD extra components added to docling DL --- .../document_loader_docling.py | 26 +++++++++++++---- ...yment-services-electronic-money-2017-5.pdf | Bin 0 -> 52859 bytes tests/test_document_loader_docling.py | 27 ++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 tests/files/fca-approach-payment-services-electronic-money-2017-5.pdf diff --git a/extract_thinker/document_loader/document_loader_docling.py b/extract_thinker/document_loader/document_loader_docling.py index 6d01e9b..e2a3212 100644 --- a/extract_thinker/document_loader/document_loader_docling.py +++ b/extract_thinker/document_loader/document_loader_docling.py @@ -254,15 +254,32 @@ def _extract_page_text(self, page: Any) -> str: Gather text from a docling Page object. Handles both text and table items. """ - from docling_core.types.doc import DocItemLabel, TableItem lines = [] if page.assembled and page.assembled.elements: for element in page.assembled.elements: - # Normal text - if element.label in [DocItemLabel.TEXT, DocItemLabel.PARAGRAPH]: + # Titles + if element.label == DocItemLabel.TITLE: + lines.append(f"# {element.text or ''}") + + # Section headers + elif element.label == DocItemLabel.SECTION_HEADER: + lines.append(f"## {element.text or ''}") + + # Code blocks + elif element.label == DocItemLabel.CODE: + code_text = element.text or "" + lines.append(f"```\n{code_text}\n```") + + # List items + elif element.label == DocItemLabel.LIST_ITEM: + lines.append(f"- {element.text or ''}") + + # Normal text and paragraphs + elif element.label in [DocItemLabel.TEXT, DocItemLabel.PARAGRAPH]: lines.append(element.text or "") + # Tables elif element.label == DocItemLabel.TABLE and isinstance(element, TableItem): table_text = self.convert_table_to_text(element) @@ -296,5 +313,4 @@ def convert_table_to_text(self, table_item: Any) -> str: else: rows.append("| " + " | ".join(row_text) + " |") - return "\n".join(rows) - + return "\n".join(rows) \ No newline at end of file diff --git a/tests/files/fca-approach-payment-services-electronic-money-2017-5.pdf b/tests/files/fca-approach-payment-services-electronic-money-2017-5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..95f5003ff3b51aea7594bcaa4cf15b94965ff581 GIT binary patch literal 52859 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 literal 0 HcmV?d00001 diff --git a/tests/test_document_loader_docling.py b/tests/test_document_loader_docling.py index 2f3b367..a34dc5d 100644 --- a/tests/test_document_loader_docling.py +++ b/tests/test_document_loader_docling.py @@ -204,3 +204,30 @@ def test_custom_ocr_config(self, test_file_path): assert isinstance(pages, list) assert len(pages) > 0 assert "content" in pages[0] + + def test_title_extraction(self): + """ + Test that a PDF with a recognized Title actually shows that Title + in the extracted text or markdown. + """ + + loader = DocumentLoaderDocling() + + # 1. Provide the path to your custom test file with a known Title + current_dir = os.path.dirname(os.path.abspath(__file__)) + test_pdf_path = os.path.join(current_dir, 'files', 'fca-approach-payment-services-electronic-money-2017-5.pdf') + + # 2. Load it + pages = loader.load(test_pdf_path) + assert pages, "No pages were returned from the PDF." + + # 3. Inspect the text from the first page (or all pages) + page_text = pages[0]["content"] # or loop over pages if you prefer + assert isinstance(page_text, str), "Expected 'content' to be a string." + + # 4. Check that your known Title text is present + # Suppose your PDF has "Document Title" as the Title. + assert "1 Introduction" in page_text, ( + "Expected the recognized Title ('1 Introduction') " + "to appear in the extracted text." + ) \ No newline at end of file