From 2613ebb6db2ebfba72b43eea8fcaf685b82ebdd4 Mon Sep 17 00:00:00 2001 From: Viktor Lesyk Date: Mon, 26 Jan 2026 19:44:46 +0100 Subject: [PATCH 01/10] Add OCR test data and implement tests for various document formats - Created HTML file with multiple images for testing OCR extraction. - Added several PDF files with different layouts and image placements to validate OCR functionality. - Introduced PPTX files with complex layouts and images at various positions for comprehensive testing. - Included XLSX files with multiple images and complex layouts to ensure accurate OCR extraction. - Implemented a new test suite in `test_ocr.py` to validate OCR functionality across all document types, ensuring context preservation and accuracy. --- README.md | 50 +++ .../markitdown/src/markitdown/__about__.py | 2 +- .../converters/_docx_converter_with_ocr.py | 181 ++++++++ .../src/markitdown/converters/_ocr_service.py | 413 ++++++++++++++++++ .../converters/_pdf_converter_with_ocr.py | 389 +++++++++++++++++ .../converters/_pptx_converter_with_ocr.py | 251 +++++++++++ .../converters/_xlsx_converter_with_ocr.py | 208 +++++++++ .../ocr_test_data/docx_complex_layout.docx | Bin 0 -> 42547 bytes .../tests/ocr_test_data/docx_image_end.docx | Bin 0 -> 41358 bytes .../ocr_test_data/docx_image_middle.docx | Bin 0 -> 41465 bytes .../tests/ocr_test_data/docx_image_start.docx | Bin 0 -> 41476 bytes .../tests/ocr_test_data/docx_multipage.docx | Bin 0 -> 48583 bytes .../ocr_test_data/docx_multiple_images.docx | Bin 0 -> 45052 bytes .../ocr_test_data/html_complex_layout.html | 14 + .../tests/ocr_test_data/html_image_end.html | 11 + .../ocr_test_data/html_image_middle.html | 12 + .../tests/ocr_test_data/html_image_start.html | 10 + .../ocr_test_data/html_multiple_images.html | 12 + .../ocr_test_data/pdf_complex_layout.pdf | Bin 0 -> 6117 bytes .../tests/ocr_test_data/pdf_image_end.pdf | Bin 0 -> 7616 bytes .../tests/ocr_test_data/pdf_image_middle.pdf | Bin 0 -> 7291 bytes .../tests/ocr_test_data/pdf_image_start.pdf | Bin 0 -> 6546 bytes .../tests/ocr_test_data/pdf_multipage.pdf | Bin 0 -> 14418 bytes .../ocr_test_data/pdf_multiple_images.pdf | Bin 0 -> 10815 bytes .../ocr_test_data/pptx_complex_layout.pptx | Bin 0 -> 32130 bytes .../tests/ocr_test_data/pptx_image_end.pptx | Bin 0 -> 33401 bytes .../ocr_test_data/pptx_image_middle.pptx | Bin 0 -> 34563 bytes .../tests/ocr_test_data/pptx_image_start.pptx | Bin 0 -> 31880 bytes .../ocr_test_data/pptx_multiple_images.pptx | Bin 0 -> 35461 bytes .../ocr_test_data/xlsx_complex_layout.xlsx | Bin 0 -> 22744 bytes .../tests/ocr_test_data/xlsx_image_end.xlsx | Bin 0 -> 15993 bytes .../ocr_test_data/xlsx_image_middle.xlsx | Bin 0 -> 15455 bytes .../tests/ocr_test_data/xlsx_image_start.xlsx | Bin 0 -> 15221 bytes .../ocr_test_data/xlsx_multiple_images.xlsx | Bin 0 -> 23398 bytes packages/markitdown/tests/test_ocr.py | 247 +++++++++++ 35 files changed, 1799 insertions(+), 1 deletion(-) create mode 100644 packages/markitdown/src/markitdown/converters/_docx_converter_with_ocr.py create mode 100644 packages/markitdown/src/markitdown/converters/_ocr_service.py create mode 100644 packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py create mode 100644 packages/markitdown/src/markitdown/converters/_pptx_converter_with_ocr.py create mode 100644 packages/markitdown/src/markitdown/converters/_xlsx_converter_with_ocr.py create mode 100644 packages/markitdown/tests/ocr_test_data/docx_complex_layout.docx create mode 100644 packages/markitdown/tests/ocr_test_data/docx_image_end.docx create mode 100644 packages/markitdown/tests/ocr_test_data/docx_image_middle.docx create mode 100644 packages/markitdown/tests/ocr_test_data/docx_image_start.docx create mode 100644 packages/markitdown/tests/ocr_test_data/docx_multipage.docx create mode 100644 packages/markitdown/tests/ocr_test_data/docx_multiple_images.docx create mode 100644 packages/markitdown/tests/ocr_test_data/html_complex_layout.html create mode 100644 packages/markitdown/tests/ocr_test_data/html_image_end.html create mode 100644 packages/markitdown/tests/ocr_test_data/html_image_middle.html create mode 100644 packages/markitdown/tests/ocr_test_data/html_image_start.html create mode 100644 packages/markitdown/tests/ocr_test_data/html_multiple_images.html create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_complex_layout.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_image_end.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_image_middle.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_image_start.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_multipage.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_multiple_images.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pptx_complex_layout.pptx create mode 100644 packages/markitdown/tests/ocr_test_data/pptx_image_end.pptx create mode 100644 packages/markitdown/tests/ocr_test_data/pptx_image_middle.pptx create mode 100644 packages/markitdown/tests/ocr_test_data/pptx_image_start.pptx create mode 100644 packages/markitdown/tests/ocr_test_data/pptx_multiple_images.pptx create mode 100644 packages/markitdown/tests/ocr_test_data/xlsx_complex_layout.xlsx create mode 100644 packages/markitdown/tests/ocr_test_data/xlsx_image_end.xlsx create mode 100644 packages/markitdown/tests/ocr_test_data/xlsx_image_middle.xlsx create mode 100644 packages/markitdown/tests/ocr_test_data/xlsx_image_start.xlsx create mode 100644 packages/markitdown/tests/ocr_test_data/xlsx_multiple_images.xlsx create mode 100644 packages/markitdown/tests/test_ocr.py diff --git a/README.md b/README.md index 652afc057..1adc1b6a4 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,56 @@ result = md.convert("example.jpg") print(result.text_content) ``` +To extract text from images embedded in documents using OCR (requires Tesseract): + +```python +from markitdown.converters._ocr_service import MultiBackendOCRService, OCRBackend +from markitdown.converters._pdf_converter_with_ocr import PdfConverterWithOCR + +# Create OCR service with Tesseract +ocr_service = MultiBackendOCRService(backends=[OCRBackend.TESSERACT]) + +# Convert PDF with OCR +converter = PdfConverterWithOCR() +with open("document.pdf", "rb") as f: + result = converter.convert(f, ocr_service=ocr_service) + print(result.text_content) +``` + +To use LLM (GPT-4o, Gemini, etc.) for OCR instead of Tesseract: + +```python +from markitdown.converters._ocr_service import MultiBackendOCRService, OCRBackend +from markitdown.converters._pdf_converter_with_ocr import PdfConverterWithOCR +from openai import OpenAI + +# Create OCR service with LLM Vision backend +client = OpenAI() +ocr_service = MultiBackendOCRService( + backends=[OCRBackend.LLM_VISION], + llm_client=client, + llm_model="gpt-4o" +) + +# Convert PDF with LLM-based OCR +converter = PdfConverterWithOCR() +with open("document.pdf", "rb") as f: + result = converter.convert(f, ocr_service=ocr_service) + print(result.text_content) +``` + +Multi-backend fallback (tries Tesseract first, falls back to LLM if Tesseract fails): + +```python +ocr_service = MultiBackendOCRService( + backends=[OCRBackend.TESSERACT, OCRBackend.LLM_VISION], + llm_client=client, + llm_model="gpt-4o" +) +``` + +OCR converters are available for PDF, DOCX, XLSX (multi-sheet), and PPTX formats. Images are extracted with context preservation (page numbers, cell references, relationship IDs). + ### Docker ```sh diff --git a/packages/markitdown/src/markitdown/__about__.py b/packages/markitdown/src/markitdown/__about__.py index 4c8b68f6d..ff0280657 100644 --- a/packages/markitdown/src/markitdown/__about__.py +++ b/packages/markitdown/src/markitdown/__about__.py @@ -1,4 +1,4 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # # SPDX-License-Identifier: MIT -__version__ = "0.1.4" +__version__ = "0.1.6b1" diff --git a/packages/markitdown/src/markitdown/converters/_docx_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_docx_converter_with_ocr.py new file mode 100644 index 000000000..9973d5fe9 --- /dev/null +++ b/packages/markitdown/src/markitdown/converters/_docx_converter_with_ocr.py @@ -0,0 +1,181 @@ +""" +Enhanced DOCX Converter with OCR support for embedded images. +Extracts images from Word documents and performs OCR while maintaining context. +""" + +import sys +import io +import re +from typing import BinaryIO, Any, Optional + +from ._html_converter import HtmlConverter +from ..converter_utils.docx.pre_process import pre_process_docx +from .._base_converter import DocumentConverterResult +from .._stream_info import StreamInfo +from .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE +from ._ocr_service import MultiBackendOCRService + +# Try loading dependencies +_dependency_exc_info = None +try: + import mammoth + from docx import Document +except ImportError: + _dependency_exc_info = sys.exc_info() + + +class DocxConverterWithOCR(HtmlConverter): + """ + Enhanced DOCX Converter with OCR support for embedded images. + Maintains document flow while extracting text from images inline. + """ + + def __init__(self): + super().__init__() + self._html_converter = HtmlConverter() + + def accepts( + self, + file_stream: BinaryIO, + stream_info: StreamInfo, + **kwargs: Any, + ) -> bool: + mimetype = (stream_info.mimetype or "").lower() + extension = (stream_info.extension or "").lower() + + if extension == ".docx": + return True + + if mimetype.startswith("application/vnd.openxmlformats-officedocument.wordprocessingml"): + return True + + return False + + def convert( + self, + file_stream: BinaryIO, + stream_info: StreamInfo, + **kwargs: Any, + ) -> DocumentConverterResult: + if _dependency_exc_info is not None: + raise MissingDependencyException( + MISSING_DEPENDENCY_MESSAGE.format( + converter=type(self).__name__, + extension=".docx", + feature="docx", + ) + ) from _dependency_exc_info[1].with_traceback(_dependency_exc_info[2]) # type: ignore[union-attr] + + # Get OCR service if available + ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") + + if ocr_service: + # Extract and OCR images before mammoth processing + file_stream.seek(0) + image_ocr_map = self._extract_and_ocr_images(file_stream, ocr_service) + + # Process with mammoth + file_stream.seek(0) + pre_process_stream = pre_process_docx(file_stream) + html_result = mammoth.convert_to_html( + pre_process_stream, + style_map=kwargs.get("style_map") + ).value + + # Inject OCR results into HTML + html_with_ocr = self._inject_ocr_into_html(html_result, image_ocr_map) + + return self._html_converter.convert_string(html_with_ocr, **kwargs) + else: + # Standard conversion without OCR + style_map = kwargs.get("style_map", None) + pre_process_stream = pre_process_docx(file_stream) + return self._html_converter.convert_string( + mammoth.convert_to_html(pre_process_stream, style_map=style_map).value, + **kwargs, + ) + + def _extract_and_ocr_images( + self, + file_stream: BinaryIO, + ocr_service: MultiBackendOCRService + ) -> dict[str, str]: + """ + Extract images from DOCX and OCR them. + + Args: + file_stream: DOCX file stream + ocr_service: OCR service to use + + Returns: + Dict mapping image relationship IDs to OCR text + """ + ocr_map = {} + + try: + file_stream.seek(0) + doc = Document(file_stream) + + # Extract images from document relationships + for rel in doc.part.rels.values(): + if "image" in rel.target_ref.lower(): + try: + image_part = rel.target_part + image_bytes = image_part.blob + + # Create stream for OCR + image_stream = io.BytesIO(image_bytes) + + # Perform OCR + ocr_result = ocr_service.extract_text(image_stream) + + if ocr_result.text.strip(): + # Store with relationship ID + ocr_text = f"\n[Image OCR: {rel.rId}]\n{ocr_result.text}\n[End OCR]\n" + ocr_map[rel.rId] = ocr_text + + except Exception: + continue + + except Exception: + pass + + return ocr_map + + def _inject_ocr_into_html(self, html: str, ocr_map: dict[str, str]) -> str: + """ + Replace image tags with OCR text inline (no base64 images). + + Args: + html: HTML content from mammoth + ocr_map: Map of image IDs to OCR text + + Returns: + HTML with images replaced by OCR text + """ + if not ocr_map: + return html + + # Create a list of OCR texts and track which ones we've used + ocr_texts = list(ocr_map.values()) + ocr_keys = list(ocr_map.keys()) + used_indices = [] + + def replace_img(match): + # Replace the entire image tag with OCR text (no base64!) + for i, ocr_text in enumerate(ocr_texts): + if i not in used_indices: + used_indices.append(i) + # Return just the OCR text as a paragraph, no image + return f"

{ocr_text}

" + return "" # Remove image if no OCR text available + + # Replace ALL img tags (including base64) with OCR text + result = re.sub(r']*>', replace_img, html) + + # If there are remaining OCR texts (images that weren't in HTML), append them + remaining_ocr = [ocr_texts[i] for i in range(len(ocr_texts)) if i not in used_indices] + if remaining_ocr: + result += f"

{''.join(remaining_ocr)}

" + + return result diff --git a/packages/markitdown/src/markitdown/converters/_ocr_service.py b/packages/markitdown/src/markitdown/converters/_ocr_service.py new file mode 100644 index 000000000..59abb0eac --- /dev/null +++ b/packages/markitdown/src/markitdown/converters/_ocr_service.py @@ -0,0 +1,413 @@ +""" +OCR Service Layer for MarkItDown +Provides unified interface for multiple OCR backends with graceful fallback. +""" + +import sys +import io +import base64 +import mimetypes +from typing import BinaryIO, Optional, Protocol, Any +from dataclasses import dataclass +from enum import Enum + +from .._stream_info import StreamInfo + + +class OCRBackend(str, Enum): + """Supported OCR backends.""" + TESSERACT = "tesseract" + EASYOCR = "easyocr" + LLM_VISION = "llm_vision" + AZURE_DOC_INTEL = "azure_doc_intel" + + +@dataclass +class OCRResult: + """Result from OCR extraction.""" + text: str + confidence: Optional[float] = None + language: Optional[str] = None + backend_used: Optional[str] = None + error: Optional[str] = None + + +class OCRService(Protocol): + """Protocol for OCR services.""" + def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: + """Extract text from an image stream.""" + ... + + +class TesseractOCRService: + """OCR service using Tesseract via pytesseract.""" + + def __init__(self, config: str = "--psm 6", lang: str = "eng"): + """ + Initialize Tesseract OCR service. + + Args: + config: Tesseract configuration string + lang: Language code (default: eng) + """ + self.config = config + self.lang = lang + self._pytesseract = None + self._PIL_Image = None + self._dependency_exc_info = None + + try: + import pytesseract + from PIL import Image + self._pytesseract = pytesseract + self._PIL_Image = Image + except ImportError: + self._dependency_exc_info = sys.exc_info() + + def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: + """Extract text using Tesseract.""" + if self._dependency_exc_info is not None: + return OCRResult( + text="", + backend_used="tesseract", + error="pytesseract not installed" + ) + + try: + # Reset stream position + image_stream.seek(0) + + # Open image + image = self._PIL_Image.open(image_stream) + + # Extract text + text = self._pytesseract.image_to_string( + image, + lang=self.lang, + config=self.config + ) + + # Try to get confidence if available + try: + data = self._pytesseract.image_to_data( + image, + lang=self.lang, + output_type=self._pytesseract.Output.DICT + ) + confidences = [c for c in data['conf'] if c != -1] + avg_confidence = sum(confidences) / len(confidences) if confidences else None + except Exception: + avg_confidence = None + + return OCRResult( + text=text.strip(), + confidence=avg_confidence, + language=self.lang, + backend_used="tesseract" + ) + except Exception as e: + return OCRResult( + text="", + backend_used="tesseract", + error=str(e) + ) + finally: + # Reset stream position + image_stream.seek(0) + + +class EasyOCRService: + """OCR service using EasyOCR.""" + + def __init__(self, langs: list[str] = None): + """ + Initialize EasyOCR service. + + Args: + langs: List of language codes (default: ['en']) + """ + self.langs = langs or ['en'] + self._reader = None + self._dependency_exc_info = None + + try: + import easyocr + # Lazy initialization - only create reader when needed + self._easyocr = easyocr + except ImportError: + self._dependency_exc_info = sys.exc_info() + + def _get_reader(self): + """Lazy load the EasyOCR reader.""" + if self._reader is None and self._easyocr is not None: + self._reader = self._easyocr.Reader(self.langs, gpu=False) + return self._reader + + def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: + """Extract text using EasyOCR.""" + if self._dependency_exc_info is not None: + return OCRResult( + text="", + backend_used="easyocr", + error="easyocr not installed" + ) + + try: + from PIL import Image + import numpy as np + + # Reset stream position + image_stream.seek(0) + + # Convert to numpy array + image = Image.open(image_stream) + image_np = np.array(image) + + # Get reader and extract text + reader = self._get_reader() + result = reader.readtext(image_np) + + # Combine all detected text + texts = [text for (bbox, text, prob) in result] + combined_text = "\n".join(texts) + + # Calculate average confidence + confidences = [prob for (bbox, text, prob) in result] + avg_confidence = sum(confidences) / len(confidences) if confidences else None + + return OCRResult( + text=combined_text.strip(), + confidence=avg_confidence, + language=",".join(self.langs), + backend_used="easyocr" + ) + except Exception as e: + return OCRResult( + text="", + backend_used="easyocr", + error=str(e) + ) + finally: + # Reset stream position + image_stream.seek(0) + + +class LLMVisionOCRService: + """OCR service using LLM vision models (OpenAI-compatible).""" + + def __init__(self, client: Any, model: str, default_prompt: Optional[str] = None): + """ + Initialize LLM Vision OCR service. + + Args: + client: OpenAI-compatible client + model: Model name (e.g., 'gpt-4o', 'gemini-2.0-flash') + default_prompt: Default prompt for OCR extraction + """ + self.client = client + self.model = model + self.default_prompt = default_prompt or ( + "Extract all text from this image. " + "Return ONLY the extracted text, maintaining the original layout and order. " + "Do not add any commentary or description." + ) + + def extract_text( + self, + image_stream: BinaryIO, + prompt: Optional[str] = None, + stream_info: Optional[StreamInfo] = None, + **kwargs: Any + ) -> OCRResult: + """Extract text using LLM vision.""" + if self.client is None: + return OCRResult( + text="", + backend_used="llm_vision", + error="LLM client not configured" + ) + + try: + # Reset stream position + image_stream.seek(0) + + # Get content type + content_type = None + if stream_info: + content_type = stream_info.mimetype + + if not content_type: + # Guess from stream + try: + from PIL import Image + image_stream.seek(0) + img = Image.open(image_stream) + fmt = img.format.lower() if img.format else "png" + content_type = f"image/{fmt}" + except Exception: + content_type = "image/png" + + # Convert to base64 + image_stream.seek(0) + base64_image = base64.b64encode(image_stream.read()).decode("utf-8") + data_uri = f"data:{content_type};base64,{base64_image}" + + # Prepare message + actual_prompt = prompt or self.default_prompt + messages = [ + { + "role": "user", + "content": [ + {"type": "text", "text": actual_prompt}, + { + "type": "image_url", + "image_url": {"url": data_uri}, + }, + ], + } + ] + + # Call LLM + response = self.client.chat.completions.create( + model=self.model, + messages=messages + ) + + text = response.choices[0].message.content + + return OCRResult( + text=text.strip() if text else "", + backend_used="llm_vision", + confidence=None # LLMs don't provide confidence scores + ) + except Exception as e: + return OCRResult( + text="", + backend_used="llm_vision", + error=str(e) + ) + finally: + # Reset stream position + image_stream.seek(0) + + +class MultiBackendOCRService: + """ + OCR service with multiple backends and fallback strategy. + Tries backends in order until one succeeds. + """ + + def __init__( + self, + backends: Optional[list[OCRBackend]] = None, + llm_client: Any = None, + llm_model: Optional[str] = None, + llm_prompt: Optional[str] = None, + tesseract_config: str = "--psm 6", + tesseract_lang: str = "eng", + easyocr_langs: Optional[list[str]] = None, + ): + """ + Initialize multi-backend OCR service. + + Args: + backends: List of backends to try in order + llm_client: OpenAI-compatible client for LLM vision + llm_model: Model name for LLM vision + llm_prompt: Default prompt for LLM vision + tesseract_config: Tesseract configuration + tesseract_lang: Tesseract language + easyocr_langs: EasyOCR language list + """ + # Default backend order: fast local OCR first, expensive LLM last + self.backends = backends or [ + OCRBackend.TESSERACT, + OCRBackend.EASYOCR, + OCRBackend.LLM_VISION, + ] + + # Initialize backend services + self.services: dict[OCRBackend, OCRService] = {} + + # Tesseract + if OCRBackend.TESSERACT in self.backends: + self.services[OCRBackend.TESSERACT] = TesseractOCRService( + config=tesseract_config, + lang=tesseract_lang + ) + + # EasyOCR + if OCRBackend.EASYOCR in self.backends: + self.services[OCRBackend.EASYOCR] = EasyOCRService( + langs=easyocr_langs or ['en'] + ) + + # LLM Vision + if OCRBackend.LLM_VISION in self.backends: + if llm_client and llm_model: + self.services[OCRBackend.LLM_VISION] = LLMVisionOCRService( + client=llm_client, + model=llm_model, + default_prompt=llm_prompt + ) + + def extract_text( + self, + image_stream: BinaryIO, + prompt: Optional[str] = None, + stream_info: Optional[StreamInfo] = None, + min_text_length: int = 3, + **kwargs: Any + ) -> OCRResult: + """ + Extract text using multiple backends with fallback. + + Args: + image_stream: Image stream to extract text from + prompt: Optional prompt for LLM-based OCR + stream_info: Stream information for the image + min_text_length: Minimum text length to consider successful + **kwargs: Additional arguments + + Returns: + OCRResult with extracted text and metadata + """ + last_error = None + + for backend in self.backends: + service = self.services.get(backend) + if service is None: + continue + + try: + # Reset stream position before each attempt + image_stream.seek(0) + + # Extract text + if backend == OCRBackend.LLM_VISION: + result = service.extract_text( + image_stream, + prompt=prompt, + stream_info=stream_info + ) + else: + result = service.extract_text(image_stream) + + # Check if extraction was successful + if result.text and len(result.text) >= min_text_length and not result.error: + return result + + # Store error for potential reporting + if result.error: + last_error = result.error + + except Exception as e: + last_error = str(e) + continue + + # All backends failed + return OCRResult( + text="", + backend_used="none", + error=f"All OCR backends failed. Last error: {last_error}" + ) diff --git a/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py new file mode 100644 index 000000000..a78f41ceb --- /dev/null +++ b/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py @@ -0,0 +1,389 @@ +""" +Enhanced PDF Converter with OCR support for embedded images. +Extracts images from PDFs and performs OCR while maintaining document context. +""" + +import sys +import io +from typing import BinaryIO, Any, Optional + +from .._base_converter import DocumentConverter, DocumentConverterResult +from .._stream_info import StreamInfo +from .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE +from ._ocr_service import MultiBackendOCRService, OCRResult + +# Import dependencies +_dependency_exc_info = None +try: + import pdfminer + import pdfminer.high_level + import pdfplumber + from PIL import Image + import fitz # PyMuPDF for high-quality image extraction +except ImportError: + _dependency_exc_info = sys.exc_info() + + +def _extract_images_from_page(page: Any) -> list[dict]: + """ + Extract images from a PDF page with position information. + + Returns: + List of dicts with 'stream', 'bbox', 'name' keys + """ + images_info = [] + + try: + # Get images from page + images = page.images + + for i, img_dict in enumerate(images): + try: + # Get image data + x0, y0, x1, y1 = img_dict['x0'], img_dict['top'], img_dict['x1'], img_dict['bottom'] + + # Extract image from page + # We need to crop the image from the page + bbox = (x0, y0, x1, y1) + + # Get the image object + # pdfplumber images don't directly give us the PIL image + # We need to extract it differently + + # Try to get the image stream + # This is a workaround - we'll extract using the page object + try: + # Get the PDF page object + page_obj = page.page_obj + + # Navigate to resources + if '/XObject' in page_obj['/Resources']: + xobjects = page_obj['/Resources']['/XObject'].get_object() + + for obj_name in xobjects: + obj = xobjects[obj_name] + + if obj['/Subtype'] == '/Image': + # Extract image data + size = (obj['/Width'], obj['/Height']) + data = obj.get_data() + + # Create PIL Image + try: + if '/ColorSpace' in obj: + cs = obj['/ColorSpace'] + if cs == '/DeviceRGB': + mode = 'RGB' + elif cs == '/DeviceGray': + mode = 'L' + else: + mode = 'RGB' + else: + mode = 'RGB' + + img = Image.frombytes(mode, size, data) + img_stream = io.BytesIO() + img.save(img_stream, format='PNG') + img_stream.seek(0) + + images_info.append({ + 'stream': img_stream, + 'bbox': bbox, + 'name': f"page_{page.page_number}_img_{i}", + 'y_pos': y0 # For sorting + }) + except Exception: + # Try alternative extraction + pass + + except Exception: + pass + + except Exception: + continue + + except Exception: + pass + + return images_info + + +def _extract_images_using_pymupdf(pdf_bytes: io.BytesIO, page_num: int) -> list[dict]: + """ + Extract images using PyMuPDF for high-quality direct extraction. + This extracts the actual embedded image data without rendering. + + Args: + pdf_bytes: PDF file as BytesIO + page_num: Page number (1-indexed) + + Returns: + List of dicts with 'stream', 'bbox', 'name', 'y_pos' keys + """ + images_info = [] + + try: + # Open PDF with PyMuPDF + pdf_bytes.seek(0) + doc = fitz.open(stream=pdf_bytes.read(), filetype="pdf") + page = doc[page_num - 1] # PyMuPDF uses 0-indexed pages + + # Get list of images + image_list = page.get_images() + + for img_index, img_info in enumerate(image_list): + try: + xref = img_info[0] # xref number + + # Extract the actual embedded image + base_image = doc.extract_image(xref) + image_bytes = base_image["image"] + + # Load as PIL Image + pil_img = Image.open(io.BytesIO(image_bytes)) + + # Save to stream + img_stream = io.BytesIO() + pil_img.save(img_stream, format='PNG') + img_stream.seek(0) + + # Get image position on page (for sorting) + # Get image instances on this page + img_rects = page.get_image_rects(xref) + y_pos = img_rects[0].y0 if img_rects else 0 + + images_info.append({ + 'stream': img_stream, + 'bbox': (0, 0, pil_img.width, pil_img.height), # Image dimensions + 'name': f"page_{page_num}_img_{img_index}", + 'y_pos': y_pos + }) + + except Exception: + continue + + doc.close() + + except Exception: + pass + + return images_info + + +def _extract_images_using_pdfplumber(page: Any) -> list[dict]: + """ + Alternative method to extract images using pdfplumber's to_image. + NOTE: This method renders the page as a screenshot, which degrades quality. + Use _extract_images_using_pymupdf() for better results. + + Returns: + List of dicts with 'stream', 'bbox', 'name' keys + """ + images_info = [] + + try: + # Get list of images from page + images = page.images + + for i, img_dict in enumerate(images): + try: + x0 = img_dict.get('x0', 0) + y0 = img_dict.get('top', 0) + x1 = img_dict.get('x1', 0) + y1 = img_dict.get('bottom', 0) + + # Check if dimensions are valid + if x1 <= x0 or y1 <= y0: + continue + + # Render the page region as an image + page_img = page.to_image(resolution=150) + + # Crop to the specific region + cropped = page_img.original.crop((x0, y0, x1, y1)) + + # Save to stream + img_stream = io.BytesIO() + cropped.save(img_stream, format='PNG') + img_stream.seek(0) + + images_info.append({ + 'stream': img_stream, + 'bbox': (x0, y0, x1, y1), + 'name': f"page_{page.page_number}_img_{i}", + 'y_pos': y0 + }) + + except Exception: + continue + + except Exception: + pass + + return images_info + + +class PdfConverterWithOCR(DocumentConverter): + """ + Enhanced PDF Converter with OCR support for embedded images. + Maintains document structure while extracting text from images inline. + """ + + def __init__(self): + super().__init__() + + def accepts( + self, + file_stream: BinaryIO, + stream_info: StreamInfo, + **kwargs: Any, + ) -> bool: + mimetype = (stream_info.mimetype or "").lower() + extension = (stream_info.extension or "").lower() + + if extension == ".pdf": + return True + + if mimetype.startswith("application/pdf") or mimetype.startswith("application/x-pdf"): + return True + + return False + + def convert( + self, + file_stream: BinaryIO, + stream_info: StreamInfo, + **kwargs: Any, + ) -> DocumentConverterResult: + if _dependency_exc_info is not None: + raise MissingDependencyException( + MISSING_DEPENDENCY_MESSAGE.format( + converter=type(self).__name__, + extension=".pdf", + feature="pdf", + ) + ) from _dependency_exc_info[1].with_traceback(_dependency_exc_info[2]) # type: ignore[union-attr] + + # Get OCR service if available + ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") + + # Read PDF into BytesIO + file_stream.seek(0) + pdf_bytes = io.BytesIO(file_stream.read()) + + markdown_content = [] + + try: + with pdfplumber.open(pdf_bytes) as pdf: + for page_num, page in enumerate(pdf.pages, 1): + markdown_content.append(f"\n## Page {page_num}\n") + + # If OCR is enabled, interleave text and images by position + if ocr_service: + images_on_page = self._extract_page_images(pdf_bytes, page_num) + + if images_on_page: + # Extract text lines with Y positions + chars = page.chars + if chars: + # Group chars into lines based on Y position + lines_with_y = [] + current_line = [] + current_y = None + + for char in sorted(chars, key=lambda c: (c['top'], c['x0'])): + y = char['top'] + if current_y is None: + current_y = y + elif abs(y - current_y) > 2: # New line threshold + if current_line: + text = ''.join([c['text'] for c in current_line]) + lines_with_y.append({'y': current_y, 'text': text.strip()}) + current_line = [] + current_y = y + current_line.append(char) + + # Add last line + if current_line: + text = ''.join([c['text'] for c in current_line]) + lines_with_y.append({'y': current_y, 'text': text.strip()}) + else: + # Fallback: use simple text extraction + text_content = page.extract_text() or "" + lines_with_y = [{'y': i*10, 'text': line} for i, line in enumerate(text_content.split('\n'))] + + # OCR all images + image_data = [] + for img_info in images_on_page: + ocr_result = ocr_service.extract_text(img_info['stream']) + if ocr_result.text.strip(): + image_data.append({ + 'y_pos': img_info['y_pos'], + 'name': img_info['name'], + 'ocr_text': ocr_result.text, + 'backend': ocr_result.backend_used, + 'type': 'image' + }) + + # Add text items + content_items = [{'y_pos': item['y'], 'text': item['text'], 'type': 'text'} for item in lines_with_y if item['text']] + content_items.extend(image_data) + + # Sort all items by Y position (top to bottom) + content_items.sort(key=lambda x: x['y_pos']) + + # Build markdown by interleaving text and images + for item in content_items: + if item['type'] == 'text': + markdown_content.append(item['text']) + else: # image + img_marker = f"\n\n[Image: {item['name']}]\n" + img_marker += f"{item['ocr_text']}\n" + if item.get('backend'): + img_marker += f"(OCR: {item['backend']})\n" + img_marker += "[End Image]\n" + markdown_content.append(img_marker) + else: + # No images, just add text + text_content = page.extract_text() or "" + if text_content.strip(): + markdown_content.append(text_content.strip()) + else: + # No OCR, just extract text + text_content = page.extract_text() or "" + if text_content.strip(): + markdown_content.append(text_content.strip()) + + # Build final markdown + markdown = "\n\n".join(markdown_content).strip() + + # Fallback to pdfminer if empty + if not markdown: + pdf_bytes.seek(0) + markdown = pdfminer.high_level.extract_text(pdf_bytes) + + except Exception: + # Fallback to pdfminer + pdf_bytes.seek(0) + markdown = pdfminer.high_level.extract_text(pdf_bytes) + + return DocumentConverterResult(markdown=markdown) + + def _extract_page_images(self, pdf_bytes: io.BytesIO, page_num: int) -> list[dict]: + """ + Extract images from a PDF page using PyMuPDF for high quality. + + Args: + pdf_bytes: PDF file as BytesIO + page_num: Page number (1-indexed) + + Returns: + List of image info dicts with 'stream', 'bbox', 'name', 'y_pos' + """ + # Use PyMuPDF for high-quality direct image extraction + images = _extract_images_using_pymupdf(pdf_bytes, page_num) + + # Sort by vertical position (top to bottom) + images.sort(key=lambda x: x['y_pos']) + + return images diff --git a/packages/markitdown/src/markitdown/converters/_pptx_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_pptx_converter_with_ocr.py new file mode 100644 index 000000000..9ece3573a --- /dev/null +++ b/packages/markitdown/src/markitdown/converters/_pptx_converter_with_ocr.py @@ -0,0 +1,251 @@ +""" +Enhanced PPTX Converter with improved OCR support. +Already has LLM-based image description, this enhances it with traditional OCR fallback. +""" + +import sys +import base64 +import io + +from typing import BinaryIO, Any, Optional + +from ._html_converter import HtmlConverter +from .._base_converter import DocumentConverter, DocumentConverterResult +from .._stream_info import StreamInfo +from .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE +from ._ocr_service import MultiBackendOCRService + +_dependency_exc_info = None +try: + import pptx +except ImportError: + _dependency_exc_info = sys.exc_info() + + +class PptxConverterWithOCR(DocumentConverter): + """Enhanced PPTX Converter with OCR fallback.""" + + def __init__(self): + super().__init__() + self._html_converter = HtmlConverter() + + def accepts( + self, + file_stream: BinaryIO, + stream_info: StreamInfo, + **kwargs: Any, + ) -> bool: + mimetype = (stream_info.mimetype or "").lower() + extension = (stream_info.extension or "").lower() + + if extension == ".pptx": + return True + + if mimetype.startswith("application/vnd.openxmlformats-officedocument.presentationml"): + return True + + return False + + def convert( + self, + file_stream: BinaryIO, + stream_info: StreamInfo, + **kwargs: Any, + ) -> DocumentConverterResult: + if _dependency_exc_info is not None: + raise MissingDependencyException( + MISSING_DEPENDENCY_MESSAGE.format( + converter=type(self).__name__, + extension=".pptx", + feature="pptx", + ) + ) from _dependency_exc_info[1].with_traceback(_dependency_exc_info[2]) # type: ignore[union-attr] + + # Get OCR service + ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") + llm_client = kwargs.get("llm_client") + + presentation = pptx.Presentation(file_stream) + md_content = "" + slide_num = 0 + + for slide in presentation.slides: + slide_num += 1 + md_content += f"\\n\\n\\n" + + title = slide.shapes.title + + def get_shape_content(shape, **kwargs): + nonlocal md_content + + # Pictures + if self._is_picture(shape): + # Get image data + image_stream = io.BytesIO(shape.image.blob) + + # Try LLM description first if available + llm_description = "" + if llm_client and kwargs.get("llm_model"): + try: + from ._llm_caption import llm_caption + image_filename = shape.image.filename + image_extension = None + if image_filename: + import os + image_extension = os.path.splitext(image_filename)[1] + + image_stream_info = StreamInfo( + mimetype=shape.image.content_type, + extension=image_extension, + filename=image_filename, + ) + + llm_description = llm_caption( + image_stream, + image_stream_info, + client=llm_client, + model=kwargs.get("llm_model"), + prompt=kwargs.get("llm_prompt"), + ) + except Exception: + pass + + # Try OCR if LLM failed or not available + ocr_text = "" + if not llm_description and ocr_service: + try: + image_stream.seek(0) + ocr_result = ocr_service.extract_text(image_stream) + if ocr_result.text.strip(): + ocr_text = ocr_result.text.strip() + except Exception: + pass + + # Get alt text from slide + alt_text = "" + try: + alt_text = shape._element._nvXxPr.cNvPr.attrib.get("descr", "") + except Exception: + pass + + # Combine descriptions + combined_desc = "\\n".join(filter(None, [llm_description, ocr_text, alt_text])) or shape.name + + # Clean up description + import re + combined_desc = re.sub(r"[\\r\\n\\[\\]]", " ", combined_desc) + combined_desc = re.sub(r"\\s+", " ", combined_desc).strip() + + # Add image markdown + filename = re.sub(r"\\W", "", shape.name) + ".jpg" + md_content += "\\n![" + combined_desc + "](" + filename + ")\\n" + + # Tables + if self._is_table(shape): + md_content += self._convert_table_to_markdown(shape.table, **kwargs) + + # Charts + if shape.has_chart: + md_content += self._convert_chart_to_markdown(shape.chart) + + # Text areas + elif shape.has_text_frame: + if shape == title: + md_content += "# " + shape.text.lstrip() + "\\n" + else: + md_content += shape.text + "\\n" + + # Group Shapes + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.GROUP: + sorted_shapes = sorted( + shape.shapes, + key=lambda x: ( + float("-inf") if not x.top else x.top, + float("-inf") if not x.left else x.left, + ), + ) + for subshape in sorted_shapes: + get_shape_content(subshape, **kwargs) + + sorted_shapes = sorted( + slide.shapes, + key=lambda x: ( + float("-inf") if not x.top else x.top, + float("-inf") if not x.left else x.left, + ), + ) + for shape in sorted_shapes: + get_shape_content(shape, **kwargs) + + md_content = md_content.strip() + + if slide.has_notes_slide: + md_content += "\\n\\n### Notes:\\n" + notes_frame = slide.notes_slide.notes_text_frame + if notes_frame is not None: + md_content += notes_frame.text + md_content = md_content.strip() + + return DocumentConverterResult(markdown=md_content.strip()) + + def _is_picture(self, shape): + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PICTURE: + return True + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PLACEHOLDER: + if hasattr(shape, "image"): + return True + return False + + def _is_table(self, shape): + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.TABLE: + return True + return False + + def _convert_table_to_markdown(self, table, **kwargs): + import html + html_table = "" + first_row = True + for row in table.rows: + html_table += "" + for cell in row.cells: + if first_row: + html_table += "" + else: + html_table += "" + html_table += "" + first_row = False + html_table += "
" + html.escape(cell.text) + "" + html.escape(cell.text) + "
" + + return ( + self._html_converter.convert_string(html_table, **kwargs).markdown.strip() + + "\\n" + ) + + def _convert_chart_to_markdown(self, chart): + try: + 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:]) + except ValueError as e: + if "unsupported plot type" in str(e): + return "\\n\\n[unsupported chart]\\n\\n" + except Exception: + return "\\n\\n[unsupported chart]\\n\\n" diff --git a/packages/markitdown/src/markitdown/converters/_xlsx_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_xlsx_converter_with_ocr.py new file mode 100644 index 000000000..6848ae978 --- /dev/null +++ b/packages/markitdown/src/markitdown/converters/_xlsx_converter_with_ocr.py @@ -0,0 +1,208 @@ +""" +Enhanced XLSX Converter with OCR support for embedded images. +Extracts images from Excel spreadsheets and performs OCR while maintaining cell context. +""" + +import sys +import io +from typing import BinaryIO, Any, Optional + +from ._html_converter import HtmlConverter +from .._base_converter import DocumentConverter, DocumentConverterResult +from .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE +from .._stream_info import StreamInfo +from ._ocr_service import MultiBackendOCRService + +# Try loading dependencies +_xlsx_dependency_exc_info = None +try: + import pandas as pd + import openpyxl + from openpyxl import load_workbook +except ImportError: + _xlsx_dependency_exc_info = sys.exc_info() + + +class XlsxConverterWithOCR(DocumentConverter): + """ + Enhanced XLSX Converter with OCR support for embedded images. + Extracts images with their cell positions and performs OCR. + """ + + def __init__(self): + super().__init__() + self._html_converter = HtmlConverter() + + def accepts( + self, + file_stream: BinaryIO, + stream_info: StreamInfo, + **kwargs: Any, + ) -> bool: + mimetype = (stream_info.mimetype or "").lower() + extension = (stream_info.extension or "").lower() + + if extension == ".xlsx": + return True + + if mimetype.startswith("application/vnd.openxmlformats-officedocument.spreadsheetml"): + return True + + return False + + def convert( + self, + file_stream: BinaryIO, + stream_info: StreamInfo, + **kwargs: Any, + ) -> DocumentConverterResult: + if _xlsx_dependency_exc_info is not None: + raise MissingDependencyException( + MISSING_DEPENDENCY_MESSAGE.format( + converter=type(self).__name__, + extension=".xlsx", + feature="xlsx", + ) + ) from _xlsx_dependency_exc_info[1].with_traceback(_xlsx_dependency_exc_info[2]) # type: ignore[union-attr] + + # Get OCR service if available + ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") + + if ocr_service: + # Remove ocr_service from kwargs to avoid duplicate argument error + kwargs_without_ocr = {k: v for k, v in kwargs.items() if k != "ocr_service"} + return self._convert_with_ocr(file_stream, ocr_service, **kwargs_without_ocr) + else: + return self._convert_standard(file_stream, **kwargs) + + def _convert_standard(self, file_stream: BinaryIO, **kwargs: Any) -> DocumentConverterResult: + """Standard conversion without OCR.""" + file_stream.seek(0) + sheets = pd.read_excel(file_stream, sheet_name=None, engine="openpyxl") + md_content = "" + + for sheet_name in sheets: + md_content += f"## {sheet_name}\n" + html_content = sheets[sheet_name].to_html(index=False) + md_content += ( + self._html_converter.convert_string(html_content, **kwargs).markdown.strip() + + "\n\n" + ) + + return DocumentConverterResult(markdown=md_content.strip()) + + def _convert_with_ocr( + self, + file_stream: BinaryIO, + ocr_service: MultiBackendOCRService, + **kwargs: Any + ) -> DocumentConverterResult: + """Convert XLSX with image OCR.""" + file_stream.seek(0) + wb = load_workbook(file_stream) + + md_content = "" + + for sheet_name in wb.sheetnames: + sheet = wb[sheet_name] + md_content += f"## {sheet_name}\n\n" + + # Convert sheet data to markdown table + file_stream.seek(0) + try: + df = pd.read_excel(file_stream, sheet_name=sheet_name, engine="openpyxl") + html_content = df.to_html(index=False) + md_content += ( + self._html_converter.convert_string(html_content, **kwargs).markdown.strip() + + "\n\n" + ) + except Exception: + # If pandas fails, just skip the table + pass + + # Extract and OCR images in this sheet + images_with_ocr = self._extract_and_ocr_sheet_images(sheet, ocr_service) + + if images_with_ocr: + md_content += "### Images in this sheet:\n\n" + for img_info in images_with_ocr: + cell_ref = img_info['cell_ref'] + ocr_text = img_info['ocr_text'] + md_content += f"**Image near cell {cell_ref}:**\n" + md_content += f"{ocr_text}\n\n" + + return DocumentConverterResult(markdown=md_content.strip()) + + def _extract_and_ocr_sheet_images( + self, + sheet: Any, + ocr_service: MultiBackendOCRService + ) -> list[dict]: + """ + Extract and OCR images from an Excel sheet. + + Args: + sheet: openpyxl worksheet + ocr_service: OCR service + + Returns: + List of dicts with 'cell_ref' and 'ocr_text' + """ + results = [] + + try: + # Check if sheet has images + if hasattr(sheet, '_images'): + for img in sheet._images: + try: + # Get image data + if hasattr(img, '_data'): + image_data = img._data() + elif hasattr(img, 'image'): + # Some versions store it differently + image_data = img.image + else: + continue + + # Create image stream + image_stream = io.BytesIO(image_data) + + # Get cell reference + cell_ref = "unknown" + if hasattr(img, 'anchor'): + anchor = img.anchor + if hasattr(anchor, '_from'): + from_cell = anchor._from + if hasattr(from_cell, 'col') and hasattr(from_cell, 'row'): + # Convert column number to letter + col_letter = self._column_number_to_letter(from_cell.col) + cell_ref = f"{col_letter}{from_cell.row + 1}" + + # Perform OCR + ocr_result = ocr_service.extract_text(image_stream) + + if ocr_result.text.strip(): + results.append({ + 'cell_ref': cell_ref, + 'ocr_text': ocr_result.text.strip(), + 'backend': ocr_result.backend_used + }) + + except Exception: + continue + + except Exception: + pass + + return results + + @staticmethod + def _column_number_to_letter(n: int) -> str: + """Convert column number to Excel column letter (0-indexed).""" + result = "" + n = n + 1 # Make 1-indexed + while n > 0: + n -= 1 + result = chr(65 + (n % 26)) + result + n //= 26 + return result diff --git a/packages/markitdown/tests/ocr_test_data/docx_complex_layout.docx b/packages/markitdown/tests/ocr_test_data/docx_complex_layout.docx new file mode 100644 index 0000000000000000000000000000000000000000..4ddd6974670012e50baaad53a097b25254c123f2 GIT binary patch literal 42547 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 literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/docx_image_end.docx b/packages/markitdown/tests/ocr_test_data/docx_image_end.docx new file mode 100644 index 0000000000000000000000000000000000000000..f2a9a8694c6c39baa3f3334f22e5297a841e9db7 GIT binary patch literal 41358 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 bSXxWV3v=sDXp%yhj*WQrh_i?)uaGs_eh ztXiV84iYoxdunC8vH8?B-N-Z@5t`UnAS!BH*wavc*ePo9(PuP-O>4r z@a+v62HlqU7@X2dLz;fJyFQEHszNVFBD0Nu_Wv;f@hN~h_@20|$u1uWSq(qVy2l)$ zZ2h}=x@f@OecVX``JAJl)cs2%85vRp56ON&gjgFHQUU%bWyKn*3kbj1^nkGS=kkr* zyru{~lCwFzbT}6*r*JGPHUE92m#4I^gBXd>ax776;54D`Ftei~1h-vV5rQDA5rP@4 zeM<+(al)^AD#N%p(8I(i{`nk1zk)$;!fBAU65dD&tI7rTk#{X3gqr1RkAd51nf%^C z5{j=}h+wfm_3zJVvG_*z9`Gv|kw@Yc^ags7HR=~I%KPTp4e+7&^q;03TMH z@O|WrCifYwKiuj;%OZqG-VOOAQT;(m=7>e%ha5+lbcdb0fdAK``m>n$Rg4h}1pX4^ z;tBZk%|D->EBPgc6P|22s9XMNR5bP%_%GajWX9ww;B64uD1Wb4fl68O!5kocmzA%) zf5qe4#rWfe{20wXaz4g)Qi9Ez#|(dntp%w5k;Fn+1eC3EQuo0ECxyx% zGWt&~zJb4j%{+AeV(n}_vXZ9K>SV-)30LB?J{?8Du?~5PN=Mq$-Kdr%QGy6x* z4K%(Zur>CPOHF`sl;GY_kdB*@6g@TVx%ZL#Irovxrj)+6ESr$wKtVBZzN^4n zBkr+0IxFW32MI!!1%3t{DmSR_XR*eS)av_nud-b~DkRvK;Nix&OEaY0I;{M-Kfz+C zQ5{x=pn+T4$lzGL6;3!C`{mIm-7yXKV9m;6{Xyy`B^LtX%6WG4h^rnXyh9EgHhukT zpqgtIA)stMa1nS(ag})q;vfpNE?$_1qXXD;%z0+MtVMnqyCG;Zl?YheWG?eM>*zhd z2?hnYc;p@fVaoo%l>H5(2Pk`1nIio2J)N9mD-?(#T9@sP^}P@vG%mn}*xi`~ULHY;gs0uG5HxW0=#||v`Bu8a_05Fo`p2TalWM}ann5Nc;3jD)v{|bR zKyx@_EWhb{XIA6l%IdP9+NM7MyNq8~T`Z*%_u$?^#_gADxc2B(c^BWQW z3LF7|bZL%R^07W(5JMoS#20EonzQh8<57sIo##~12(^|-%cLCw7k6%DJcFDkEmDn< zm<801#?Ia>G;UEQyOsPUAzU|WGhzSCQtU{UsMYKD$2}o{{?Tu7WC|u97+;#K_XA%N zxDvk}d0OVD*CS`ATPBu|8eh9tbqtBbvq@tKr;x^e9JQpu&`+u|a1XuCHL52RWS4R@ zlw>nv^rxBXXrq8>05w!gh=aNqW1zNip7#E9&vQoZJhpeF6%xY^k`~UwprF6tW})!{ z)Ny|1xJYfT;x}!O2>WGZU;%FG*sJOUWH`7^E*$in?W^eE- zEj3xq6b<#Ckkr7Cyr=2TXo`g_bX69fU9h6OfzDt@;s_4rbkqk8>>g`B5!r1>MR+@M zxIXjJB3K#q@DkfA^ICzsC;<*hRwo}9poCrNspn}jATA)p8N$qhozX^{ZerfNXwDP! zb218YQkHNSQ~@-yh@!l-x|TW4Dm3f~o{If77de03zynXEd;ky-XpNr#47PZ=ON?|F!|(^g9p0eN)j{9Wy+n58)M%e!y8 z#8ENgv7G(F+*dCK!U0 zt0_FLK0afMi-B7vW_U z1ki1%^gde~1*Xe9q+ft8vJbmmC>Kh8L#K^I`xyA(9yq#;hq5KLRJw>l4c zQ_xV`(NYW5xc|oMICPBc6i-sffr|`LCkvdimZ?xRSrbp~;&Vl~5iU*ScUjN=#QtT~ z*Z!-AmS-5jQLjv)hA+rvulcFc-AZDs2+OV$otFfaN?Xu&ImPGDS>7Dbm{O>OF>bXdny@H{bp^@``PXaN4C7D@oHuqqr>FzHAUb{_)DP*t${~|zj1jUPqJK@BU z>jNgCC{IxqYB8R;n7trIQbtlHD=7kS3wbzjR7sKvZz<3e0Z19?CW!|;OV1=NcB*x0 zIm;$mU>`O+l8##u-+c|riR!>L@nA8Dqqv*0_={BK9dbZUP!1g~B=52aAXm-ua9hci zq->8N$~gURL)H=g@JR(C{AEaK8aR-T%xZQBySqSa=G>aNvo^4ucza~%k(}Y2D@}ne zN!?Dc+{()4HgI9!k6YbJFD3=KPD@z_yD2Hdt>Ptw7Zlub(+Wbb1 zKz8Z;)}1~*KM%s5R>1#C%uEREYi*+>G9ZS; zW2l6zMQ44kgk+H+T1*Eq0mDK9pgBzf@M+a!JtjM|rfQaw-q7)}a8x5blR=L!bn38UzeWD}9z`ij4LaH&6n2Hb-9|MyJdW8u3Tx%>D>Y z(&*DdM#8d^rq-S!lLAhIH>o19BsV=~O0>=ckxWsbhmvM3G+joZuqtj6VKhzk_6r!I zi=_o1u(aAy7#f)wRQM)>FB#abhw3S^3I0Qf;lc)EEVk@qHEdTK=xR;(0A)G3LXC@#l~=Z z>z|za`T_FK1y@Bvk_LUi!cae8|En;Ri#SPTx17K8VD#>k8Mg14!?rrf zAJCps)Ndj$o{sBoeznZ@)rf;7Eh37A)=-cy0QXDh`{jWkry-+tCa5!1#iQz3T|}3y-Uq#$zhbHwvyzf5gMcj+r{SibNve0rEUx_V+)6~ zU9Jq>s*Sej(*ff>uai!434;yNAQvh%9?mgI=(>toH}|_i4{7@Y!2Ks?!@>0V<Tg1+LS%o`c{}9I>k6&+??+sA$#ANFlar|txx%p<{rqfyf(Zt zm_R6Cy{5b-w6L&(r!9q;x>doI@OC4N)YvK|y&VV3hZSPd;85O|gxL;etuWgcU!aJ# z@dzM^RIRasRIHuo_{1_^KbqqgjIX@4I;wKNhS1M!daVyeqI)S80~~D3CC~oe(+aa0kJd2)o#3TyAP}Ar`>nyjPQ@%mfw%h}DA9La(_hl*=Y(01lsoQd-}{xw~5Mc~pmDDp#8MHo*Q6 zljPRH=VOmH!0fG>k!pzKW3a9-AIU;i=`>dE;=gYkpNhLL)#ti2Ye*mIxmcKD^3mEi zi%hn2dgZLWu*ebfcfD;fmA@)@sT%V~ahuvycv7${F__qb;<_~7MuVJk-ytV9qdy@6 zVP7k`Hg1@~6r=_(vK*O!*SAKQ$+-h$bNc*_tsTl~^gb^jOZ)Y9J=&fb>3_7p4VM!c|GMB~=LW2YSP($we0m2DlT;5( zV^~F#*l-BDQbbyj9SJB|TY!t9W?r7ywYYG)?x{#mNh`Mf@n)EIWeV&X*_hd&)c5l* zmQ0C%hHsgS(!lV;#A0P#z@=Pn6zf+)z95N4#14}gSFkn8{6Nti;hn&Z$tNIO(Rg9whs}?-2xOkk(KLPVb;FZ(hx1g-n7y1#K{h_Pd0(#uXtUFNTD*$OwPx*ZWc10 zK>tt%Q|=x+ahQcM^Uu6}CpJyFm*xo*AZoH}R&nZPSQ$S_!PV*kVD+4Ea#)2da2YZ9 zDOtu&ZQO)9JO@Z2a0NF#7Wgu&Qg0tZi}&1}fcXSo0JTz7GgGK|R(+;-zrM!tZbV zw(%^N^)g-eb_w2>^wSieK`^+kV$$HGydSgA#vk`@gxYN$42@Lcbad@M`|%tZ2Ekd2 zeGmDGUwWp(OlV`DQKW*&N8Dx+8bT)y&|Gv#PAX{$fR-h_4juI|XbUfV1KQ!q&Umw7cleqWhqO&A5 z=g6v|$gxyLF{uo`khG!b%Tbp;of;%gz5N z@|hw+);WAPiT8HXugyAn1-m>foTaiu-aA?<~Xq26g zM-;wOLXVL>3;6aKs9Z0fhZBMRj&PEHd(=Ks@j@ioDMfl5yKM0Zeji!E+XZ_;qF9o; zY@yw^S*_D+hpU6Z_JWaapRMa}J%U5krA=*T3@7aq2S1$ZKs6)6xJ`_eLkfmYS|Km7 z?$~7TLivq#T@e0#WosU00|o)3#O)Fc#O0kRk+^r)nt`ANcB5q|H(8oK3t5B5C-qtN z*K}F89L`#JvE9TQp*M?g_#haBGb#0Vb>7z|Sym|-@*;ZDSSsakp`gN<9pBK8Q_vTtlB+X6D4+`r@ha?xhcryGDGGkji`_ja?t ze(oUnaTiW4(T)feF0%>Z6A{dR0&=0GNN3PYiPuP30FJ#+;W|X@av}!F6!Z{MHE<54K=ukA!}(!rl&uVq0u$)Z2X|^9 zh4!SGKFMB7j{Ax=$s{J*bh7eguAta)NTIn-%(PQfr5%T~b zRKmS%dWB#t6rq%r4C9_)*o*WRQ?@nTR#JbP#;8;QD)q~vetIt1uujh;@e z7tLD=97Z!22GaLge@}_gj3i*kK?0K;q1J5gVnQgE$E0r=%CKo1E+Wa--OgkDLT6BZ z-+A(ek(P#p&3XSM#Yc>xvlO|qJb4^iPkG)Sr$qbTZZ3so;5D||X*Q2Jwde~_G0_U+TM<0EsjW;mh^3WWXOomw zEuXEHwU@M0pFT&QOrY#pa)`FFNO~F5wYYJZ&~>?zp=`M2g0oPdw}O|rohkG2WlVu< zxxM$B23E|neP+Hs221n%=}_*nCn^nw{S6L4-?uI9x*ij8r06q{e>?9uDOuI1cS-o2 zsjM+)iKDv;4&_tDz>B(H>h!>&W!>hyAMTvS&UF{F-gDeCYIdQ7syl42y_I zRNQjoZ8iJG0DcF+dS}(13m6w?_3FxA`$u07+RDyRg_3H4UsCw4_xxu%ClnnaMmxp* z={%)kZ~3;*_>dA;eMHCLG`jhMhhA{(*(CHuy?k}ZCvnsKCR_BJ0(MPm|kuD)Tf9aN1H7WH&)d%zpPf2qo zJey_kfg%#i!g9~U0HpVS7z-qbMSdL)wo{iCK(1h4mV$}*)^d)qK(ZR%5g`xA6%!*X zE;M>vthhKb{UP1BHpgmX$Gd_Xz9)>!u90pMr{$V?R6%Esv_rvcNDY-q9%o8Jfk2ci zVay!XYS5vW-aHSMm!@&NNNI8%;!B5=erm1MXR;Tw1 z`k&eB*8slNGT;v$6fk>52fmxQxwtymY1-K`Te+Iq{q?g~6Vm`U$btd#waG*QYI zfw8E9LXBDgS1a@K9V)3iso3~qJECvb)5CG>*iPXcjF^KD&?X_{;t1z+DG4Bcx;qxW zLkT?(6@kvFMX^-1kkWE%_k<)>1jnYEn7}yDWyM;8P!9pKaI8Q)sfmDn8+XKM4nnUS z35vGWNb{j;;lPt(KDMIlTlZHd#8EbY-ihnXV$I(^m88|FnO>6R47B*= zs_4^zb%&|tO{BO88EywlnM2J4BMQUk43e~|5ME6tldo=#SH>1|*`4nT&wZp_)T#uM zI$FbE4tK$-d5kh z{@I`{UGfThK*7d9;W+;g{zvj(73KeG)!c*z`(PFf36I{v+x-dFdUk;(7_}T z`u(G~T2zBMQPZUCL=LpZZ1l5O5#>R=a@;(;XDcZRkld6qmtl%rU5Wua-|jO5 zd^ibUnQ8qqgJ~w{>ntF?LB?4|!8ysmI;=9#^M3jDI8)4v>9Gaa5Q5yHlH%HoyNv8n z*R4cnv{GgfHWf|ww?zsCY1|y|{!GO$-0=yy zNQRs#(G^s5rkM!049lYA+6qj{F|-tz1Mn}(BZ7e&*6($|6}Xm^cc+Kh<8Ug!8AjQp zYK$t*L+D3DPI&ls1kH_0Dd)r`G`H+Xbk5%$yhJj;-fXPju6q{#U><>@YOshM`T85c zoC(&aof*E{7Cr9YFuhPz20h0$PEg0n9Ooy(S-zikaJz0=K3lxP)FR2( zhQ;dT@+S9xnf|?oY2c~hyF>Ve??+{v`$sRlf+PYy{vHxEsFJ?!lc(N|Ys>AP5T70c zdvfl(z4w7_M_qlsiG^V;F4j`N0Q*HP)Z^9IBkJ*L|J8K82qFW^P&eLMKZ1*mVF50b zwV@dMG;ioS^+&<>2mC*KtUAV*kO>qJ5I*2_`Jb_uotdeX5wn$@k%bv6lcT-Gmc}!8 zirp{&gz?_cbljv*T6A57jVUk_Ne$*!w&;_9lbPG^6Kw9GNgCphcD9)!u_Ep!K4a=b znvL1NwsY^^$a{bMes#?Ik@K7P$z^Nxp+hil7SqPqH9S=&05*t3{jH0y6h*uVd|Ls> zYT(RpI1x@nm*a)6Z5r%uB~pY+z#|TqD-pldoGN~4xOm^*ZQ;}I?kUDr650og=_K#I zH*=tzbljdD?LIGRZr_K0H4LJ$ zmsbb;yJJ(fUIJP>>xQ|$y@>zu^qIZmXwN)f{0%)olhx@4frF1**F!{1RJ2g2k@h4V zVt8n5j3GBY6Srr|BVnaUDDl#&XmXR@*TCuscRg&IoiS+wL$n!IPu!q09 z+t#Bp8;k!-3Y*H~wT-`jTy@p~_NeWUcRlwbI3@XFea_>$|Ch5GcX=08)%9|IV&cy4 zuur|krlzJL^U*KgK;8~@R=`44tdwg}g#&MHSIA*SWhjQ)@%N|;!Z+lyva-&e!9BaH zJ3BjLVgi|E3nl0dzBV-6fJJ!(eV8e(%+Js7?(PcrhP6I`4K8eMb|1gbztTSjW4(*p zhQ%C}#P}pcVjx2WpI%(#SUsL!!P)a`UC7A|oAxfk@au{$T34H(LmIW?i)`?DV2l5x z;C(g6UU?<^eS0J~pI=+cM3-7g(_iT&5XlgumrH_X=eMT;z2olDYdlBTQC(MD>`EI9 z+i78#Ko5Vg@4PuGzr=N-JxN%Ssjbr{pwpRd=ZS?TJq%E^p`k%|yq|-uIinEg=NTb)4|2X zjTgGAL$ccWf>~1d!x8ell1HhW5@EowUh-&<8r}$_Fl!twQ=W;FNq%sBZ4Jf028D{4 zOCWbbSyCa?e?fN>pr|;TBb%C@WE?U|S3Ra-!-UQqp->pT7mp2q(JqTB@cDG(i%cZo z$ed09aS0=E)@*I>P1*yj;ktKr)*gA|)y2*RY5 zK`1LLdv<>Q+jRBVGRL3X6d~LsAnR=vHJ+%$m}*E7i89YN(4_`xJ3S5Rm4FxeO^QtG z0TC%nSj&1guf09u!1wj_wby)dK_o5hz|zYHLR9J3uW2Ue7-t>f=G2d*9NoY{lkYF% zwOntyn9LVqO1rWWA>idUyEB^t+5YBL^qsrfgsG|jtF5z+ifa4Y_(*q1Dk(j53Ny3< zB1nltr<8P##1I1#3Q|%M5>nD4-Q7s%(A^R$9q(Ma~hF4IW{}hfp=A+(O|J)?E zLHE-clOP*QEnc6;ot=l=RhR7@9dQW>*iZrj7Jm{$1B0olsdP?ugOQ8t=tF1rM)T^< zDN=8}#20aHcQh^{yP^i_IW0b&5`7GyYNh4HPu*1!^&oYD;LOb-_MeQ8jeXn5bMSey zW=Y8S<7WpO+cyVC;<`zHF)B*RPyKBtu5s25Nr~Af)3}_l2c)u1@l>^wxip*L`Gvvk z{tDZB*d~fBf(wcrutu{S)ll zu#tNI4Y_eNfSAl+r;a@D#{fayvZLv>9l11ikI=`dUp9bh0Y!H}Ldzl>vP8@M8m{jv z1wES2$41VY$fxB>wM30QC}`R=id@(0 zrD7|qHc5fTToYBT+1U5#bgwaCEzd}a0U{6>1ffoS%p}>eG4zmFIozP|WP;7unhd~O zm#JIFu=yZTN<0m}%m3YJk&06#M}R875%@LKV@R=E;~Xq*t1Z!fG&!y~@$U1ShO(-v z>Wk~HNCq03o=tg;hQKrDn>~4-!OhFdL~_!-MIWVQXV#CryqRQIY6i1H#>PUxRH`nR z6J#IXtk2xV+fGSqLOMQ%1eXkc@`rz4|=@tB!}!JGV)S+A{+=KArnhi5EP4 z6W2e+kR25HCGtdclQCSM-Wf1FD=LH^islhTM=E^6W#pp~vx4>RK?9zcr{#LbQPplv z4jU;cDN9Crm(rMf+VcX5WlmN3Ygwo_Lwc^9B)jp#hfKpGN(v(X%3cgs3JN=k3%6SO zit=)dD6y02plPr7$;lT*TUZI$ZCa2aqsrE`~-?hsn1_pb~>POb<9+w(1 zAoJQqoL0%xDqL`=5_G6N5uDm0Z&>`R}l z#+2#O@jPNj=xXT<$-99uzFiAH%9xO@NNaz?sraKGtElg`A5(RvV1@q;DL=z^rO%k60Qin>BFM@RW)gdOPZq5;ezh@~sh%q5K~2IlC^*4EXW zvv5K_%{KR(!b`mGH$U6a6?`vGozsJMqT&mp7;gh3nVSbAU{PQE;7pDnY4%9Si_;Qd zY+}90tz$F$ucJ2`YItjTThpLNHeQnY?^Ml_RrZj=lW~%;k+!WRcPttq9>z{Z`?~%mS9;v=UP6^?zWA79c`9u! zm$ftwyk}*!u+BlP{re*KTgOu07*-$TWVL%%%Nc8HS4m|B_#1YcmJOb9ipaCA7!{PX z_KjFIGv8tt0D}>)i@Xzr%q@#+rGVM9)a6o;lQ3wbFfe7Q=b`DEF(;>H93jU{4g{Pr z(qdyl3QF#j-4{_+&auD9UN%>evo-k{#Z@{Sg7LQf-cpmNq~RQg&*fbz+l!Fy=>Gox zb9lHe!)>jJ%ISVKcS$8&@xs~WhGNy(q;T|?>on&LDrNgME7Cr;vWZcEP=8P7LJp^e zu8m&!Ecpt2q;-vJDp(bJlFs<0S^Q7LGTF!hyUe#0MoPnw>|0#2 zK}Y;!=6yxn!x*AxMSD$e9xGLrmq&SLPt9}QJ!-ULpuOap#fQ64c$2 z3LAp@;vkn>MAX`_<9^cie7xGN13R_mg#3z=%x$j+~yu14iR z&MnV4_!*7f)RVzS_%}PxNf#lr-ygzVXd2LueeivfdqBHYU#~6-%jnuf6j#pci$a5S z5wFJ~ljX&@O^cPf*g>2-pTns5?sl@aj#a074fZtkC`&P^_$)=wnd739K3)lMJkojd z+>xQwb})g^bb#wfv+4N6nNl0Bd^J1txv7qei~ZzBZne!*_w8ukBsmd%_J#ec8mAp~ z>y736)AgOwx*+#&1}3F1OS5?;C4Efll*4Z-%JI=U~i zvaa)(|N_xAB>EolTlIO!S9@_cJ;%iTco(f z#l;UmZcmn0bDN#;!EwMK{Y5CKT@T8^Y-E;t`Q1vm&gu3!(a__rm(wA~$4kwxHr96S z9qabx9|4+(%px)M61eP59n%US-7P(5&8%4? zqNj1H^>P3|NLxIPQ+;t>!JuDSU(dw68lWs9wBdoOz9BR4a zr&G6Ny<1c`7Et+tPg<4f)0$Yv>zd3Nwj z&^+rV@-tY-sWAC5{7R|T53U?`X-2<%Sfp~_KMqd2ysfGa^##wIQ_-e=ifd@B@9*oG zPTU1L?;%_lpEfrie(tw3F<}%Dp&*Y|f*r@bE_Y+_H!+aH!-8b)7AV6hTBwi9M`7|1 zRfSHo46bdHa~r4RoY>f%!+9{|lrxe9lb_`>bmdOwj_w}m>?Qf7kx$30ey(-o8?U|zP?YJX+yW2~9(o_al9SoiGT~dn!NJXvp%OMM zuT}ccR2{})v$2C__xU9iqHj0p9c_*)M$8z`dnqfpq;Q=#RpgMTjKtw;Ic5Me&`CUg zK*QZQ9mOxNr2m}z_}D#R)qn{A1Tq2uRLI#{b4RmZQ?y9e896uUU}|m0YvW{LwWnq4 zLDkR(Lla#E zIJo7m6MM_eYRG7aJ0yB%UoQ3D^MLNJv6BV$?~lN7d=Oy~RW6sLu$Dbn�<7aQzDAB@0OS0b?Z4%(Hwg`$gI9? z?+b)E?X|a`PNn*V`Kq-1U7N5dHB6Hb&yII`kiq$x?E>8Z39_0lz8Tx+#}g)o7IEN& zJv$s8r%vIExpx#Wtd;1rBiv&=5e6cO2c_Z1_-E9{S=^LqTnS0}_J?9cQnuN5L&&si zd+EB%qD#mg4seQC6>H+eg2zv1=RfbhUTgk|jUGo~^W-@ROSVD>?}bh8SdDr7TRx2s z%JHx(*5mh$JhbY^OzR4jp`=#!Ph5vs5lZ7?s{tg1;T@}wybL@z`Qj}5>SAYk&UUkm~0Vf?^*aVX?2gO0$O1d)gLl7)I%yp;YBUO-T+p)E!; z8mLGq5aV6H5rrq1KpypgKl*G{N-&Zord_m2SUjle@q#_D zA})b5!$+^xM#|=Tde&^-ZrzO%7;$;EgCoK)=yEV`RyDx06!53$E4P+GXot_h-cC5tMvUlyP7)Y`h<%;%WKa zPLtF(A0tL`GgaX0Djvp@P-Ve40mzF*fECuze!7>Ou^Z=tDBE|LRyID2_ZRr7y4Ylu zYozc=R(N3|u0B!f8)hSn&7`%6*D9q#X{L>UsQNR{?GiWqRF&M1!(kpqTcT(N^CaQd zb9cgx<^vAZ&~}OBE@UbzP8$IDR3n-UPvQL2&7;#EgJufE2e;XB=)nRVClekGw9aeLc z&vnT-^6~t8WP^eGeT&*IudCd7hPr9wjPTc zzc0KVxb{sX82MVv6qGcaP0WbTdsf+Q z6h}(UfA5+1xsblv?Q1jsNel8SJn>lAavbo!m^-<$@)Pr0S}tiaJim&RzWE3hXeNx6 zdSN()5zHFM?4?K5c3;y!`e4Nc+7?Q=Wmpg#IjA4=&UE^-C+s8&_iVtGdAt2#ULu** zu?kpCS(CG_q7`wYX@MTZx(z1UqID2swhBCRLM}Gt_L(>*0PF6HbpQYSxDk4N+={&7 z-$En*6%E7zgoT0)E^~{Al9BG*B{FaHm*x7;21o7#0Q4UsgK!oOZpP0%oh)1p|8k~K z0iJBiGN;Hx=aCsY{D0KQZ}_c#B;x=5&0n@As_=C%zNR(ukYS{d^ba9267>7tW9I1c zD}{$D|1mQ|wS$z~VE_Qg`TGBD@LNI1J^#CPnL0WB*I8%RD!jS zD>aEkK<$xz|1bG{@#;)@WaDbcyCv=an*OWP>`34*`TzI)-;n>T0`^!*qAMTL283V& zi2oqvAglR{WXYnhljamcL#WeoW!*3~w{~<7Ngn>dKhNLHL(7ejAX59L!@WfBpJDP(ol2 literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/docx_image_middle.docx b/packages/markitdown/tests/ocr_test_data/docx_image_middle.docx new file mode 100644 index 0000000000000000000000000000000000000000..200f3c6c796e30a81dba677df629752f48b167b3 GIT binary patch literal 41465 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 literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/docx_image_start.docx b/packages/markitdown/tests/ocr_test_data/docx_image_start.docx new file mode 100644 index 0000000000000000000000000000000000000000..7855bd16606fd42062bcdc56078629f9f9877b96 GIT binary patch literal 41476 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

F;bZ-j!{PdUYS|uO0>8PN4hH-Ya;E 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 + +Complex HTML Document + +

Complex Layout

+ + + + +
ItemStatus
Task 1Complete
Task 2Pending
+Warning notice +

Additional information below the warning.

+ + \ No newline at end of file diff --git a/packages/markitdown/tests/ocr_test_data/html_image_end.html b/packages/markitdown/tests/ocr_test_data/html_image_end.html new file mode 100644 index 000000000..3a5e640b4 --- /dev/null +++ b/packages/markitdown/tests/ocr_test_data/html_image_end.html @@ -0,0 +1,11 @@ + + +HTML with Image at End + +

Content Page

+

Main content goes here.

+

More details and information.

+

Final paragraph.

+Footer image + + \ No newline at end of file diff --git a/packages/markitdown/tests/ocr_test_data/html_image_middle.html b/packages/markitdown/tests/ocr_test_data/html_image_middle.html new file mode 100644 index 000000000..2ab98cda9 --- /dev/null +++ b/packages/markitdown/tests/ocr_test_data/html_image_middle.html @@ -0,0 +1,12 @@ + + +HTML with Image in Middle + +

Article

+

This is the introduction paragraph.

+

We will see an infographic below.

+Stats infographic +

Analysis

+

This section comes after the image.

+ + \ No newline at end of file diff --git a/packages/markitdown/tests/ocr_test_data/html_image_start.html b/packages/markitdown/tests/ocr_test_data/html_image_start.html new file mode 100644 index 000000000..0e0b40d31 --- /dev/null +++ b/packages/markitdown/tests/ocr_test_data/html_image_start.html @@ -0,0 +1,10 @@ + + +HTML with Image at Start + +

Welcome

+Banner image +

This is the main content after the header image.

+

More content here.

+ + \ No newline at end of file diff --git a/packages/markitdown/tests/ocr_test_data/html_multiple_images.html b/packages/markitdown/tests/ocr_test_data/html_multiple_images.html new file mode 100644 index 000000000..091efc3c5 --- /dev/null +++ b/packages/markitdown/tests/ocr_test_data/html_multiple_images.html @@ -0,0 +1,12 @@ + + +HTML with Multiple Images + +

Financial Report

+

First section

+Revenue chart +

Second section

+Growth chart +

Conclusion

+ + \ No newline at end of file diff --git a/packages/markitdown/tests/ocr_test_data/pdf_complex_layout.pdf b/packages/markitdown/tests/ocr_test_data/pdf_complex_layout.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f843ab89131bcb12b2ae89db482bddd8d10302e6 GIT binary patch literal 6117 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 YBsu@CO(lxIZvsX@@K-)RT#UZ{3ob?SRR910 literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/pdf_image_end.pdf b/packages/markitdown/tests/ocr_test_data/pdf_image_end.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8b020edf69894f3aebd16a54ffbaedd4959b77a0 GIT binary patch literal 7616 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 Kr4qZ~e*ABhm#u>U literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/pdf_image_middle.pdf b/packages/markitdown/tests/ocr_test_data/pdf_image_middle.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d90bc9d3edf3834f7e141f89ff0414e17ba0cdd3 GIT binary patch literal 7291 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 literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/pdf_image_start.pdf b/packages/markitdown/tests/ocr_test_data/pdf_image_start.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0b57b7f96bd08a76759f7b510563540f9faad1fe GIT binary patch literal 6546 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 F{{S9LZpQ!s literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/pdf_multiple_images.pdf b/packages/markitdown/tests/ocr_test_data/pdf_multiple_images.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8a5e47416812f7bba8250ca69c0202e6ac1aa16c GIT binary patch literal 10815 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

1kjF$#%C=-~_93#zwz4eo~22CyHD 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 OTYoCX{bcvYyZ-}m{=BUK literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/pptx_image_end.pptx b/packages/markitdown/tests/ocr_test_data/pptx_image_end.pptx new file mode 100644 index 0000000000000000000000000000000000000000..1ed9804cd48b610a5263ae2c53c903e956d0aa05 GIT binary patch literal 33401 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

1kjF$#%C=-~_93#zwz4eo~22CyHD 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 Q6pugak0q%Qwtsy3Ka)N*82|tP literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/pptx_multiple_images.pptx b/packages/markitdown/tests/ocr_test_data/pptx_multiple_images.pptx new file mode 100644 index 0000000000000000000000000000000000000000..a8eaa4dee17b2ca9865ff1bd494f9142b4a25375 GIT binary patch literal 35461 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

1kjF$#%C=-~_93#zwz4eo~22CyHD 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 Z$Vq~J&Km;&Abx%?d`?6}vH$Vz{{i%+Ef)X) literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/xlsx_image_middle.xlsx b/packages/markitdown/tests/ocr_test_data/xlsx_image_middle.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2a6c91b77c7d47bc27486d87dbc348b556a5ffad GIT binary patch literal 15455 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 UVkrOs(#Q7#2mpXR%OCIlAODFyVgLXD literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/xlsx_image_start.xlsx b/packages/markitdown/tests/ocr_test_data/xlsx_image_start.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9e461821ae47a18ace2c1e9939c9a9b54b3e089d GIT binary patch literal 15221 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 Tw*&w{`g|^cd{)XYf4uu&xdn-A literal 0 HcmV?d00001 diff --git a/packages/markitdown/tests/ocr_test_data/xlsx_multiple_images.xlsx b/packages/markitdown/tests/ocr_test_data/xlsx_multiple_images.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..eb8d0cfe6fed86b94bb7ec2c9f18d8030bd9d6c6 GIT binary patch literal 23398 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 f-p3qm?LXejHB= 2, f"Should process multiple sheets (found {sheet_count})" + + # Validate image sections with cell references + assert "Images in this sheet:" in markdown, "Should have image sections" + assert "cell" in markdown.lower(), "Should track cell references" + + # Check for OCR text + has_ocr = any(keyword in markdown for keyword in ["Figure", "Chart", "Monthly", "Trend"]) + assert has_ocr, "Should extract OCR text from images" + + +def test_xlsx_ocr_cell_references(ocr_service): + """Test XLSX cell position tracking.""" + converter = XlsxConverterWithOCR() + xlsx_path = TEST_DATA_DIR / "xlsx_image_start.xlsx" + + if not xlsx_path.exists(): + pytest.skip(f"Test file not found: {xlsx_path}") + + with open(xlsx_path, 'rb') as f: + result = converter.convert(f, StreamInfo(extension=".xlsx"), ocr_service=ocr_service) + markdown = result.text_content + + # Validate cell references present + assert "Image near cell" in markdown, "Should have cell reference tracking" + + # Check multiple sheets processed + assert "Sales Q1" in markdown or "Forecast" in markdown, "Should process named sheets" + + +def test_pptx_ocr_basic(ocr_service): + """Test PPTX OCR with alt text integration.""" + converter = PptxConverterWithOCR() + pptx_path = TEST_DATA_DIR / "pptx_complex_layout.pptx" + + if not pptx_path.exists(): + pytest.skip(f"Test file not found: {pptx_path}") + + with open(pptx_path, 'rb') as f: + result = converter.convert(f, StreamInfo(extension=".pptx"), ocr_service=ocr_service) + markdown = result.text_content + + # Validate structure + assert "Slide number:" in markdown, "Should have slide markers" + assert "Product Comparison" in markdown or "Market Share" in markdown, "Should have slide content" + assert "![" in markdown, "Should have markdown images with OCR in alt text" + + +def test_pptx_ocr_multipage(ocr_service): + """Test PPTX with multiple slides.""" + converter = PptxConverterWithOCR() + pptx_path = TEST_DATA_DIR / "pptx_image_end.pptx" + + if not pptx_path.exists(): + pytest.skip(f"Test file not found: {pptx_path}") + + with open(pptx_path, 'rb') as f: + result = converter.convert(f, StreamInfo(extension=".pptx"), ocr_service=ocr_service) + markdown = result.text_content + + # Validate multiple slides + slide_count = markdown.count("Slide number:") + assert slide_count >= 2, f"Should have multiple slides (found {slide_count})" + + # Check OCR text in alt text + assert "Contact" in markdown or "info" in markdown or "techcorp" in markdown, "Should extract OCR text" + + +def test_ocr_service_fallback(ocr_service): + """Test OCR service graceful handling.""" + from PIL import Image + import io + + # Create a simple test image + img = Image.new('RGB', (400, 100), color='white') + from PIL import ImageDraw + draw = ImageDraw.Draw(img) + draw.text((10, 30), "Test Text", fill='black') + + img_stream = io.BytesIO() + img.save(img_stream, format='PNG') + img_stream.seek(0) + + result = ocr_service.extract_text(img_stream) + + # Should either succeed or fail gracefully + assert result is not None, "Should return result object" + assert hasattr(result, 'text'), "Result should have text attribute" + assert hasattr(result, 'backend_used'), "Result should have backend_used attribute" + + +if __name__ == "__main__": + # Run tests when executed directly + pytest.main([__file__, "-v"]) From 2a3a3efac7d2cf24da65332a65f891e503fdee9c Mon Sep 17 00:00:00 2001 From: Viktor Lesyk Date: Tue, 27 Jan 2026 08:59:18 +0100 Subject: [PATCH 02/10] Enhance OCR functionality and validation in document converters - Refactor image extraction and processing in PDF, PPTX, and XLSX converters for improved readability and consistency. - Implement detailed validation for OCR text positioning relative to surrounding text in test cases. - Introduce comprehensive tests for expected OCR results across various document types, ensuring no base64 images are present. - Improve error handling and logging for better debugging during OCR extraction. --- .../converters/_docx_converter_with_ocr.py | 21 +- .../src/markitdown/converters/_ocr_service.py | 90 ++-- .../converters/_pdf_converter_with_ocr.py | 165 +++--- .../converters/_pptx_converter_with_ocr.py | 17 +- .../converters/_xlsx_converter_with_ocr.py | 71 ++- packages/markitdown/tests/test_ocr.py | 491 +++++++++++++++--- 6 files changed, 642 insertions(+), 213 deletions(-) diff --git a/packages/markitdown/src/markitdown/converters/_docx_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_docx_converter_with_ocr.py index 9973d5fe9..f686c7a7a 100644 --- a/packages/markitdown/src/markitdown/converters/_docx_converter_with_ocr.py +++ b/packages/markitdown/src/markitdown/converters/_docx_converter_with_ocr.py @@ -46,7 +46,9 @@ def accepts( if extension == ".docx": return True - if mimetype.startswith("application/vnd.openxmlformats-officedocument.wordprocessingml"): + if mimetype.startswith( + "application/vnd.openxmlformats-officedocument.wordprocessingml" + ): return True return False @@ -64,7 +66,9 @@ def convert( extension=".docx", feature="docx", ) - ) from _dependency_exc_info[1].with_traceback(_dependency_exc_info[2]) # type: ignore[union-attr] + ) from _dependency_exc_info[1].with_traceback( + _dependency_exc_info[2] + ) # type: ignore[union-attr] # Get OCR service if available ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") @@ -78,8 +82,7 @@ def convert( file_stream.seek(0) pre_process_stream = pre_process_docx(file_stream) html_result = mammoth.convert_to_html( - pre_process_stream, - style_map=kwargs.get("style_map") + pre_process_stream, style_map=kwargs.get("style_map") ).value # Inject OCR results into HTML @@ -96,9 +99,7 @@ def convert( ) def _extract_and_ocr_images( - self, - file_stream: BinaryIO, - ocr_service: MultiBackendOCRService + self, file_stream: BinaryIO, ocr_service: MultiBackendOCRService ) -> dict[str, str]: """ Extract images from DOCX and OCR them. @@ -171,10 +172,12 @@ def replace_img(match): return "" # Remove image if no OCR text available # Replace ALL img tags (including base64) with OCR text - result = re.sub(r']*>', replace_img, html) + result = re.sub(r"]*>", replace_img, html) # If there are remaining OCR texts (images that weren't in HTML), append them - remaining_ocr = [ocr_texts[i] for i in range(len(ocr_texts)) if i not in used_indices] + remaining_ocr = [ + ocr_texts[i] for i in range(len(ocr_texts)) if i not in used_indices + ] if remaining_ocr: result += f"

{''.join(remaining_ocr)}

" diff --git a/packages/markitdown/src/markitdown/converters/_ocr_service.py b/packages/markitdown/src/markitdown/converters/_ocr_service.py index 59abb0eac..144bd2085 100644 --- a/packages/markitdown/src/markitdown/converters/_ocr_service.py +++ b/packages/markitdown/src/markitdown/converters/_ocr_service.py @@ -16,6 +16,7 @@ class OCRBackend(str, Enum): """Supported OCR backends.""" + TESSERACT = "tesseract" EASYOCR = "easyocr" LLM_VISION = "llm_vision" @@ -25,6 +26,7 @@ class OCRBackend(str, Enum): @dataclass class OCRResult: """Result from OCR extraction.""" + text: str confidence: Optional[float] = None language: Optional[str] = None @@ -34,6 +36,7 @@ class OCRResult: class OCRService(Protocol): """Protocol for OCR services.""" + def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: """Extract text from an image stream.""" ... @@ -59,6 +62,7 @@ def __init__(self, config: str = "--psm 6", lang: str = "eng"): try: import pytesseract from PIL import Image + self._pytesseract = pytesseract self._PIL_Image = Image except ImportError: @@ -68,9 +72,7 @@ def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: """Extract text using Tesseract.""" if self._dependency_exc_info is not None: return OCRResult( - text="", - backend_used="tesseract", - error="pytesseract not installed" + text="", backend_used="tesseract", error="pytesseract not installed" ) try: @@ -82,20 +84,18 @@ def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: # Extract text text = self._pytesseract.image_to_string( - image, - lang=self.lang, - config=self.config + image, lang=self.lang, config=self.config ) # Try to get confidence if available try: data = self._pytesseract.image_to_data( - image, - lang=self.lang, - output_type=self._pytesseract.Output.DICT + image, lang=self.lang, output_type=self._pytesseract.Output.DICT + ) + confidences = [c for c in data["conf"] if c != -1] + avg_confidence = ( + sum(confidences) / len(confidences) if confidences else None ) - confidences = [c for c in data['conf'] if c != -1] - avg_confidence = sum(confidences) / len(confidences) if confidences else None except Exception: avg_confidence = None @@ -103,14 +103,10 @@ def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: text=text.strip(), confidence=avg_confidence, language=self.lang, - backend_used="tesseract" - ) - except Exception as e: - return OCRResult( - text="", backend_used="tesseract", - error=str(e) ) + except Exception as e: + return OCRResult(text="", backend_used="tesseract", error=str(e)) finally: # Reset stream position image_stream.seek(0) @@ -126,12 +122,13 @@ def __init__(self, langs: list[str] = None): Args: langs: List of language codes (default: ['en']) """ - self.langs = langs or ['en'] + self.langs = langs or ["en"] self._reader = None self._dependency_exc_info = None try: import easyocr + # Lazy initialization - only create reader when needed self._easyocr = easyocr except ImportError: @@ -147,9 +144,7 @@ def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: """Extract text using EasyOCR.""" if self._dependency_exc_info is not None: return OCRResult( - text="", - backend_used="easyocr", - error="easyocr not installed" + text="", backend_used="easyocr", error="easyocr not installed" ) try: @@ -173,20 +168,18 @@ def extract_text(self, image_stream: BinaryIO, **kwargs: Any) -> OCRResult: # Calculate average confidence confidences = [prob for (bbox, text, prob) in result] - avg_confidence = sum(confidences) / len(confidences) if confidences else None + avg_confidence = ( + sum(confidences) / len(confidences) if confidences else None + ) return OCRResult( text=combined_text.strip(), confidence=avg_confidence, language=",".join(self.langs), - backend_used="easyocr" - ) - except Exception as e: - return OCRResult( - text="", backend_used="easyocr", - error=str(e) ) + except Exception as e: + return OCRResult(text="", backend_used="easyocr", error=str(e)) finally: # Reset stream position image_stream.seek(0) @@ -217,14 +210,12 @@ def extract_text( image_stream: BinaryIO, prompt: Optional[str] = None, stream_info: Optional[StreamInfo] = None, - **kwargs: Any + **kwargs: Any, ) -> OCRResult: """Extract text using LLM vision.""" if self.client is None: return OCRResult( - text="", - backend_used="llm_vision", - error="LLM client not configured" + text="", backend_used="llm_vision", error="LLM client not configured" ) try: @@ -240,6 +231,7 @@ def extract_text( # Guess from stream try: from PIL import Image + image_stream.seek(0) img = Image.open(image_stream) fmt = img.format.lower() if img.format else "png" @@ -269,8 +261,7 @@ def extract_text( # Call LLM response = self.client.chat.completions.create( - model=self.model, - messages=messages + model=self.model, messages=messages ) text = response.choices[0].message.content @@ -278,14 +269,10 @@ def extract_text( return OCRResult( text=text.strip() if text else "", backend_used="llm_vision", - confidence=None # LLMs don't provide confidence scores + confidence=None, # LLMs don't provide confidence scores ) except Exception as e: - return OCRResult( - text="", - backend_used="llm_vision", - error=str(e) - ) + return OCRResult(text="", backend_used="llm_vision", error=str(e)) finally: # Reset stream position image_stream.seek(0) @@ -332,23 +319,20 @@ def __init__( # Tesseract if OCRBackend.TESSERACT in self.backends: self.services[OCRBackend.TESSERACT] = TesseractOCRService( - config=tesseract_config, - lang=tesseract_lang + config=tesseract_config, lang=tesseract_lang ) # EasyOCR if OCRBackend.EASYOCR in self.backends: self.services[OCRBackend.EASYOCR] = EasyOCRService( - langs=easyocr_langs or ['en'] + langs=easyocr_langs or ["en"] ) # LLM Vision if OCRBackend.LLM_VISION in self.backends: if llm_client and llm_model: self.services[OCRBackend.LLM_VISION] = LLMVisionOCRService( - client=llm_client, - model=llm_model, - default_prompt=llm_prompt + client=llm_client, model=llm_model, default_prompt=llm_prompt ) def extract_text( @@ -357,7 +341,7 @@ def extract_text( prompt: Optional[str] = None, stream_info: Optional[StreamInfo] = None, min_text_length: int = 3, - **kwargs: Any + **kwargs: Any, ) -> OCRResult: """ Extract text using multiple backends with fallback. @@ -386,15 +370,17 @@ def extract_text( # Extract text if backend == OCRBackend.LLM_VISION: result = service.extract_text( - image_stream, - prompt=prompt, - stream_info=stream_info + image_stream, prompt=prompt, stream_info=stream_info ) else: result = service.extract_text(image_stream) # Check if extraction was successful - if result.text and len(result.text) >= min_text_length and not result.error: + if ( + result.text + and len(result.text) >= min_text_length + and not result.error + ): return result # Store error for potential reporting @@ -409,5 +395,5 @@ def extract_text( return OCRResult( text="", backend_used="none", - error=f"All OCR backends failed. Last error: {last_error}" + error=f"All OCR backends failed. Last error: {last_error}", ) diff --git a/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py index a78f41ceb..e075e0b1c 100644 --- a/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py +++ b/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py @@ -40,7 +40,12 @@ def _extract_images_from_page(page: Any) -> list[dict]: for i, img_dict in enumerate(images): try: # Get image data - x0, y0, x1, y1 = img_dict['x0'], img_dict['top'], img_dict['x1'], img_dict['bottom'] + x0, y0, x1, y1 = ( + img_dict["x0"], + img_dict["top"], + img_dict["x1"], + img_dict["bottom"], + ) # Extract image from page # We need to crop the image from the page @@ -57,41 +62,43 @@ def _extract_images_from_page(page: Any) -> list[dict]: page_obj = page.page_obj # Navigate to resources - if '/XObject' in page_obj['/Resources']: - xobjects = page_obj['/Resources']['/XObject'].get_object() + if "/XObject" in page_obj["/Resources"]: + xobjects = page_obj["/Resources"]["/XObject"].get_object() for obj_name in xobjects: obj = xobjects[obj_name] - if obj['/Subtype'] == '/Image': + if obj["/Subtype"] == "/Image": # Extract image data - size = (obj['/Width'], obj['/Height']) + size = (obj["/Width"], obj["/Height"]) data = obj.get_data() # Create PIL Image try: - if '/ColorSpace' in obj: - cs = obj['/ColorSpace'] - if cs == '/DeviceRGB': - mode = 'RGB' - elif cs == '/DeviceGray': - mode = 'L' + if "/ColorSpace" in obj: + cs = obj["/ColorSpace"] + if cs == "/DeviceRGB": + mode = "RGB" + elif cs == "/DeviceGray": + mode = "L" else: - mode = 'RGB' + mode = "RGB" else: - mode = 'RGB' + mode = "RGB" img = Image.frombytes(mode, size, data) img_stream = io.BytesIO() - img.save(img_stream, format='PNG') + img.save(img_stream, format="PNG") img_stream.seek(0) - images_info.append({ - 'stream': img_stream, - 'bbox': bbox, - 'name': f"page_{page.page_number}_img_{i}", - 'y_pos': y0 # For sorting - }) + images_info.append( + { + "stream": img_stream, + "bbox": bbox, + "name": f"page_{page.page_number}_img_{i}", + "y_pos": y0, # For sorting + } + ) except Exception: # Try alternative extraction pass @@ -144,7 +151,7 @@ def _extract_images_using_pymupdf(pdf_bytes: io.BytesIO, page_num: int) -> list[ # Save to stream img_stream = io.BytesIO() - pil_img.save(img_stream, format='PNG') + pil_img.save(img_stream, format="PNG") img_stream.seek(0) # Get image position on page (for sorting) @@ -152,12 +159,19 @@ def _extract_images_using_pymupdf(pdf_bytes: io.BytesIO, page_num: int) -> list[ img_rects = page.get_image_rects(xref) y_pos = img_rects[0].y0 if img_rects else 0 - images_info.append({ - 'stream': img_stream, - 'bbox': (0, 0, pil_img.width, pil_img.height), # Image dimensions - 'name': f"page_{page_num}_img_{img_index}", - 'y_pos': y_pos - }) + images_info.append( + { + "stream": img_stream, + "bbox": ( + 0, + 0, + pil_img.width, + pil_img.height, + ), # Image dimensions + "name": f"page_{page_num}_img_{img_index}", + "y_pos": y_pos, + } + ) except Exception: continue @@ -187,10 +201,10 @@ def _extract_images_using_pdfplumber(page: Any) -> list[dict]: for i, img_dict in enumerate(images): try: - x0 = img_dict.get('x0', 0) - y0 = img_dict.get('top', 0) - x1 = img_dict.get('x1', 0) - y1 = img_dict.get('bottom', 0) + x0 = img_dict.get("x0", 0) + y0 = img_dict.get("top", 0) + x1 = img_dict.get("x1", 0) + y1 = img_dict.get("bottom", 0) # Check if dimensions are valid if x1 <= x0 or y1 <= y0: @@ -204,15 +218,17 @@ def _extract_images_using_pdfplumber(page: Any) -> list[dict]: # Save to stream img_stream = io.BytesIO() - cropped.save(img_stream, format='PNG') + cropped.save(img_stream, format="PNG") img_stream.seek(0) - images_info.append({ - 'stream': img_stream, - 'bbox': (x0, y0, x1, y1), - 'name': f"page_{page.page_number}_img_{i}", - 'y_pos': y0 - }) + images_info.append( + { + "stream": img_stream, + "bbox": (x0, y0, x1, y1), + "name": f"page_{page.page_number}_img_{i}", + "y_pos": y0, + } + ) except Exception: continue @@ -244,7 +260,9 @@ def accepts( if extension == ".pdf": return True - if mimetype.startswith("application/pdf") or mimetype.startswith("application/x-pdf"): + if mimetype.startswith("application/pdf") or mimetype.startswith( + "application/x-pdf" + ): return True return False @@ -262,7 +280,9 @@ def convert( extension=".pdf", feature="pdf", ) - ) from _dependency_exc_info[1].with_traceback(_dependency_exc_info[2]) # type: ignore[union-attr] + ) from _dependency_exc_info[1].with_traceback( + _dependency_exc_info[2] + ) # type: ignore[union-attr] # Get OCR service if available ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") @@ -291,55 +311,78 @@ def convert( current_line = [] current_y = None - for char in sorted(chars, key=lambda c: (c['top'], c['x0'])): - y = char['top'] + for char in sorted( + chars, key=lambda c: (c["top"], c["x0"]) + ): + y = char["top"] if current_y is None: current_y = y elif abs(y - current_y) > 2: # New line threshold if current_line: - text = ''.join([c['text'] for c in current_line]) - lines_with_y.append({'y': current_y, 'text': text.strip()}) + text = "".join( + [c["text"] for c in current_line] + ) + lines_with_y.append( + {"y": current_y, "text": text.strip()} + ) current_line = [] current_y = y current_line.append(char) # Add last line if current_line: - text = ''.join([c['text'] for c in current_line]) - lines_with_y.append({'y': current_y, 'text': text.strip()}) + text = "".join([c["text"] for c in current_line]) + lines_with_y.append( + {"y": current_y, "text": text.strip()} + ) else: # Fallback: use simple text extraction text_content = page.extract_text() or "" - lines_with_y = [{'y': i*10, 'text': line} for i, line in enumerate(text_content.split('\n'))] + lines_with_y = [ + {"y": i * 10, "text": line} + for i, line in enumerate(text_content.split("\n")) + ] # OCR all images image_data = [] for img_info in images_on_page: - ocr_result = ocr_service.extract_text(img_info['stream']) + ocr_result = ocr_service.extract_text( + img_info["stream"] + ) if ocr_result.text.strip(): - image_data.append({ - 'y_pos': img_info['y_pos'], - 'name': img_info['name'], - 'ocr_text': ocr_result.text, - 'backend': ocr_result.backend_used, - 'type': 'image' - }) + image_data.append( + { + "y_pos": img_info["y_pos"], + "name": img_info["name"], + "ocr_text": ocr_result.text, + "backend": ocr_result.backend_used, + "type": "image", + } + ) # Add text items - content_items = [{'y_pos': item['y'], 'text': item['text'], 'type': 'text'} for item in lines_with_y if item['text']] + content_items = [ + { + "y_pos": item["y"], + "text": item["text"], + "type": "text", + } + for item in lines_with_y + if item["text"] + ] content_items.extend(image_data) # Sort all items by Y position (top to bottom) - content_items.sort(key=lambda x: x['y_pos']) + content_items.sort(key=lambda x: x["y_pos"]) # Build markdown by interleaving text and images for item in content_items: - if item['type'] == 'text': - markdown_content.append(item['text']) + if item["type"] == "text": + markdown_content.append(item["text"]) else: # image img_marker = f"\n\n[Image: {item['name']}]\n" img_marker += f"{item['ocr_text']}\n" - if item.get('backend'): + if item.get("backend"): img_marker += f"(OCR: {item['backend']})\n" img_marker += "[End Image]\n" markdown_content.append(img_marker) @@ -384,6 +427,6 @@ def _extract_page_images(self, pdf_bytes: io.BytesIO, page_num: int) -> list[dic images = _extract_images_using_pymupdf(pdf_bytes, page_num) # Sort by vertical position (top to bottom) - images.sort(key=lambda x: x['y_pos']) + images.sort(key=lambda x: x["y_pos"]) return images diff --git a/packages/markitdown/src/markitdown/converters/_pptx_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_pptx_converter_with_ocr.py index 9ece3573a..425739f59 100644 --- a/packages/markitdown/src/markitdown/converters/_pptx_converter_with_ocr.py +++ b/packages/markitdown/src/markitdown/converters/_pptx_converter_with_ocr.py @@ -41,7 +41,9 @@ def accepts( if extension == ".pptx": return True - if mimetype.startswith("application/vnd.openxmlformats-officedocument.presentationml"): + if mimetype.startswith( + "application/vnd.openxmlformats-officedocument.presentationml" + ): return True return False @@ -59,7 +61,9 @@ def convert( extension=".pptx", feature="pptx", ) - ) from _dependency_exc_info[1].with_traceback(_dependency_exc_info[2]) # type: ignore[union-attr] + ) from _dependency_exc_info[1].with_traceback( + _dependency_exc_info[2] + ) # type: ignore[union-attr] # Get OCR service ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") @@ -88,10 +92,12 @@ def get_shape_content(shape, **kwargs): if llm_client and kwargs.get("llm_model"): try: from ._llm_caption import llm_caption + image_filename = shape.image.filename image_extension = None if image_filename: import os + image_extension = os.path.splitext(image_filename)[1] image_stream_info = StreamInfo( @@ -129,10 +135,14 @@ def get_shape_content(shape, **kwargs): pass # Combine descriptions - combined_desc = "\\n".join(filter(None, [llm_description, ocr_text, alt_text])) or shape.name + combined_desc = ( + "\\n".join(filter(None, [llm_description, ocr_text, alt_text])) + or shape.name + ) # Clean up description import re + combined_desc = re.sub(r"[\\r\\n\\[\\]]", " ", combined_desc) combined_desc = re.sub(r"\\s+", " ", combined_desc).strip() @@ -203,6 +213,7 @@ def _is_table(self, shape): def _convert_table_to_markdown(self, table, **kwargs): import html + html_table = "" first_row = True for row in table.rows: diff --git a/packages/markitdown/src/markitdown/converters/_xlsx_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_xlsx_converter_with_ocr.py index 6848ae978..25f544e09 100644 --- a/packages/markitdown/src/markitdown/converters/_xlsx_converter_with_ocr.py +++ b/packages/markitdown/src/markitdown/converters/_xlsx_converter_with_ocr.py @@ -45,7 +45,9 @@ def accepts( if extension == ".xlsx": return True - if mimetype.startswith("application/vnd.openxmlformats-officedocument.spreadsheetml"): + if mimetype.startswith( + "application/vnd.openxmlformats-officedocument.spreadsheetml" + ): return True return False @@ -63,7 +65,9 @@ def convert( extension=".xlsx", feature="xlsx", ) - ) from _xlsx_dependency_exc_info[1].with_traceback(_xlsx_dependency_exc_info[2]) # type: ignore[union-attr] + ) from _xlsx_dependency_exc_info[1].with_traceback( + _xlsx_dependency_exc_info[2] + ) # type: ignore[union-attr] # Get OCR service if available ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") @@ -71,11 +75,15 @@ def convert( if ocr_service: # Remove ocr_service from kwargs to avoid duplicate argument error kwargs_without_ocr = {k: v for k, v in kwargs.items() if k != "ocr_service"} - return self._convert_with_ocr(file_stream, ocr_service, **kwargs_without_ocr) + return self._convert_with_ocr( + file_stream, ocr_service, **kwargs_without_ocr + ) else: return self._convert_standard(file_stream, **kwargs) - def _convert_standard(self, file_stream: BinaryIO, **kwargs: Any) -> DocumentConverterResult: + def _convert_standard( + self, file_stream: BinaryIO, **kwargs: Any + ) -> DocumentConverterResult: """Standard conversion without OCR.""" file_stream.seek(0) sheets = pd.read_excel(file_stream, sheet_name=None, engine="openpyxl") @@ -85,17 +93,16 @@ def _convert_standard(self, file_stream: BinaryIO, **kwargs: Any) -> DocumentCon md_content += f"## {sheet_name}\n" html_content = sheets[sheet_name].to_html(index=False) md_content += ( - self._html_converter.convert_string(html_content, **kwargs).markdown.strip() + self._html_converter.convert_string( + html_content, **kwargs + ).markdown.strip() + "\n\n" ) return DocumentConverterResult(markdown=md_content.strip()) def _convert_with_ocr( - self, - file_stream: BinaryIO, - ocr_service: MultiBackendOCRService, - **kwargs: Any + self, file_stream: BinaryIO, ocr_service: MultiBackendOCRService, **kwargs: Any ) -> DocumentConverterResult: """Convert XLSX with image OCR.""" file_stream.seek(0) @@ -110,10 +117,14 @@ def _convert_with_ocr( # Convert sheet data to markdown table file_stream.seek(0) try: - df = pd.read_excel(file_stream, sheet_name=sheet_name, engine="openpyxl") + df = pd.read_excel( + file_stream, sheet_name=sheet_name, engine="openpyxl" + ) html_content = df.to_html(index=False) md_content += ( - self._html_converter.convert_string(html_content, **kwargs).markdown.strip() + self._html_converter.convert_string( + html_content, **kwargs + ).markdown.strip() + "\n\n" ) except Exception: @@ -126,17 +137,15 @@ def _convert_with_ocr( if images_with_ocr: md_content += "### Images in this sheet:\n\n" for img_info in images_with_ocr: - cell_ref = img_info['cell_ref'] - ocr_text = img_info['ocr_text'] + cell_ref = img_info["cell_ref"] + ocr_text = img_info["ocr_text"] md_content += f"**Image near cell {cell_ref}:**\n" md_content += f"{ocr_text}\n\n" return DocumentConverterResult(markdown=md_content.strip()) def _extract_and_ocr_sheet_images( - self, - sheet: Any, - ocr_service: MultiBackendOCRService + self, sheet: Any, ocr_service: MultiBackendOCRService ) -> list[dict]: """ Extract and OCR images from an Excel sheet. @@ -152,13 +161,13 @@ def _extract_and_ocr_sheet_images( try: # Check if sheet has images - if hasattr(sheet, '_images'): + if hasattr(sheet, "_images"): for img in sheet._images: try: # Get image data - if hasattr(img, '_data'): + if hasattr(img, "_data"): image_data = img._data() - elif hasattr(img, 'image'): + elif hasattr(img, "image"): # Some versions store it differently image_data = img.image else: @@ -169,24 +178,30 @@ def _extract_and_ocr_sheet_images( # Get cell reference cell_ref = "unknown" - if hasattr(img, 'anchor'): + if hasattr(img, "anchor"): anchor = img.anchor - if hasattr(anchor, '_from'): + if hasattr(anchor, "_from"): from_cell = anchor._from - if hasattr(from_cell, 'col') and hasattr(from_cell, 'row'): + if hasattr(from_cell, "col") and hasattr( + from_cell, "row" + ): # Convert column number to letter - col_letter = self._column_number_to_letter(from_cell.col) + col_letter = self._column_number_to_letter( + from_cell.col + ) cell_ref = f"{col_letter}{from_cell.row + 1}" # Perform OCR ocr_result = ocr_service.extract_text(image_stream) if ocr_result.text.strip(): - results.append({ - 'cell_ref': cell_ref, - 'ocr_text': ocr_result.text.strip(), - 'backend': ocr_result.backend_used - }) + results.append( + { + "cell_ref": cell_ref, + "ocr_text": ocr_result.text.strip(), + "backend": ocr_result.backend_used, + } + ) except Exception: continue diff --git a/packages/markitdown/tests/test_ocr.py b/packages/markitdown/tests/test_ocr.py index d184a2a7a..c770e3ad8 100644 --- a/packages/markitdown/tests/test_ocr.py +++ b/packages/markitdown/tests/test_ocr.py @@ -2,12 +2,13 @@ Test OCR functionality for markitdown converters. Tests OCR text extraction from images embedded in PDF, DOCX, XLSX, and PPTX files. -Validates context preservation, multi-sheet processing, and accuracy. +Validates context preservation, multi-sheet processing, positioning accuracy, and text matching. """ import sys from pathlib import Path -from typing import BinaryIO +from dataclasses import dataclass +from typing import Any import pytest @@ -29,26 +30,265 @@ TEST_DATA_DIR = Path(__file__).parent / "ocr_test_data" +# ============================================================================== +# EXPECTED OCR RESULTS - Ground Truth for Validation +# ============================================================================== + + +@dataclass +class ImagePosition: + """Track expected position of an image in document.""" + + position: str # "start", "middle", "end" + page_or_sheet: int # Page number (PDF/DOCX) or sheet index (XLSX) + expected_text: str # Expected OCR text (partial match) + before_marker: str | None = None # Text that should appear before image + after_marker: str | None = None # Text that should appear after image + + +# Expected OCR results for test files +EXPECTED_OCR_RESULTS: dict[str, list[ImagePosition]] = { + # PDF Tests + "pdf_complex_layout.pdf": [ + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="WARNING", + before_marker="ItemQuantity", + after_marker="Widget A", + ) + ], + "pdf_image_end.pdf": [ + ImagePosition( + position="end", + page_or_sheet=1, + expected_text="Contact", + before_marker="Keep reading", + after_marker=None, + ) + ], + "pdf_image_start.pdf": [ + ImagePosition( + position="start", + page_or_sheet=1, + expected_text="START", + before_marker=None, + after_marker="This is text", + ) + ], + "pdf_image_middle.pdf": [ + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="MIDDLE", + before_marker="introductory text", + after_marker="Section 2", + ) + ], + "pdf_multiple_images.pdf": [ + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="Image 1", + before_marker="Multiple Images", + after_marker="Text between", + ), + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="Image 2", + before_marker="Text between", + after_marker="Final text", + ), + ], + "pdf_multipage.pdf": [ + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="PAGE 1 IMAGE", + before_marker="BEFORE the image", + after_marker="AFTER the image", + ), + ImagePosition( + position="end", + page_or_sheet=2, + expected_text="PAGE 2 IMAGE", + before_marker="Final paragraph", + after_marker=None, + ), + ImagePosition( + position="start", + page_or_sheet=3, + expected_text="PAGE 3 IMAGE", + before_marker=None, + after_marker="Content that follows", + ), + ], + # DOCX Tests + "docx_complex_layout.docx": [ + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="NOTICE", + before_marker="Security notice", + after_marker=None, + ) + ], + "docx_image_end.docx": [ + ImagePosition( + position="end", + page_or_sheet=1, + expected_text="FOOTER", + before_marker="Recommendations", + after_marker=None, + ) + ], + "docx_image_start.docx": [ + ImagePosition( + position="start", + page_or_sheet=1, + expected_text="HEADER", + before_marker=None, + after_marker="main content", + ) + ], + "docx_image_middle.docx": [ + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="FIGURE 1", + before_marker="see an image below", + after_marker="Analysis", + ) + ], + "docx_multiple_images.docx": [ + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="Chart 1", + before_marker="First section", + after_marker="Second section", + ), + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="Chart 2", + before_marker="Second section", + after_marker="Conclusion", + ), + ], + "docx_multipage.docx": [ + ImagePosition( + position="middle", + page_or_sheet=1, + expected_text="DOCX PAGE 1", + before_marker="BEFORE IMAGE", + after_marker="AFTER IMAGE", + ), + ImagePosition( + position="end", + page_or_sheet=2, + expected_text="DOCX PAGE 2", + before_marker="Final paragraph", + after_marker=None, + ), + ImagePosition( + position="start", + page_or_sheet=3, + expected_text="DOCX PAGE 3", + before_marker=None, + after_marker="Content that follows", + ), + ], +} + + +def validate_image_position( + markdown: str, image_pos: ImagePosition, verbose: bool = False +) -> tuple[bool, str]: + """ + Validate that an image appears at the expected position with expected text. + + Returns: + Tuple of (success: bool, message: str) + """ + # Check expected text is present + if image_pos.expected_text not in markdown: + return ( + False, + f"Expected OCR text '{image_pos.expected_text}' not found in output", + ) + + # Get position of expected text + text_idx = markdown.index(image_pos.expected_text) + + # Validate position relative to markers + if image_pos.before_marker: + if image_pos.before_marker not in markdown: + return False, f"Before marker '{image_pos.before_marker}' not found" + before_idx = markdown.index(image_pos.before_marker) + if before_idx >= text_idx: + return ( + False, + f"Image text (pos {text_idx}) should appear AFTER before marker (pos {before_idx})", + ) + + if image_pos.after_marker: + if image_pos.after_marker not in markdown: + return False, f"After marker '{image_pos.after_marker}' not found" + after_idx = markdown.index(image_pos.after_marker) + if text_idx >= after_idx: + return ( + False, + f"Image text (pos {text_idx}) should appear BEFORE after marker (pos {after_idx})", + ) + + # Build success message + msg_parts = [f"Image at {image_pos.position} position validated"] + if image_pos.before_marker: + before_idx = markdown.index(image_pos.before_marker) + msg_parts.append(f"before_marker(pos:{before_idx})") + msg_parts.append(f"image(pos:{text_idx})") + if image_pos.after_marker: + after_idx = markdown.index(image_pos.after_marker) + msg_parts.append(f"after_marker(pos:{after_idx})") + + return True, " -> ".join(msg_parts) + + +def validate_no_base64_images(markdown: str) -> tuple[bool, str]: + """Validate that no base64 encoded images are present in output.""" + if "data:image" in markdown or "base64" in markdown: + return False, "Base64 images found in output (should be replaced with OCR text)" + return True, "No base64 images found" + + @pytest.fixture(scope="module") -def ocr_service(): +def ocr_service() -> Any: """Create OCR service with Tesseract backend.""" try: import pytesseract + # Try to configure Tesseract if on Windows - if sys.platform == 'win32': - pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' + if sys.platform == "win32": + pytesseract.pytesseract.tesseract_cmd = ( + r"C:\Program Files\Tesseract-OCR\tesseract.exe" + ) return MultiBackendOCRService(backends=[OCRBackend.TESSERACT]) except ImportError: pytest.skip("pytesseract not installed") -def test_tesseract_available(): +def test_tesseract_available() -> None: """Test that Tesseract OCR is available.""" try: import pytesseract - if sys.platform == 'win32': - pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' + + if sys.platform == "win32": + pytesseract.pytesseract.tesseract_cmd = ( + r"C:\Program Files\Tesseract-OCR\tesseract.exe" + ) version = pytesseract.get_tesseract_version() assert version is not None, "Tesseract version should be available" @@ -59,85 +299,122 @@ def test_tesseract_available(): pytest.skip(f"Tesseract not available: {e}") -def test_pdf_ocr_basic(ocr_service): - """Test PDF OCR extraction with context preservation.""" +def test_pdf_ocr_basic(ocr_service: Any) -> None: + """Test PDF OCR extraction with context preservation and position validation.""" converter = PdfConverterWithOCR() pdf_path = TEST_DATA_DIR / "pdf_complex_layout.pdf" if not pdf_path.exists(): pytest.skip(f"Test file not found: {pdf_path}") - with open(pdf_path, 'rb') as f: - result = converter.convert(f, StreamInfo(extension=".pdf"), ocr_service=ocr_service) + with open(pdf_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=".pdf"), ocr_service=ocr_service + ) markdown = result.text_content # Validate structure and content assert "## Page" in markdown, "Should have page marker" assert "[Image:" in markdown, "Should have image marker" - assert "WARNING" in markdown or "Handle" in markdown, "Should extract OCR text" + # Validate expected OCR results with position tracking + filename = pdf_path.name + if filename in EXPECTED_OCR_RESULTS: + for img_pos in EXPECTED_OCR_RESULTS[filename]: + success, message = validate_image_position(markdown, img_pos, verbose=True) + assert success, f"Position validation failed: {message}" + print(f" [PASS] {message}") # Verbose output for pytest -s -def test_pdf_ocr_image_at_end(ocr_service): - """Test PDF with image at document end.""" + +def test_pdf_ocr_image_at_end(ocr_service: Any) -> None: + """Test PDF with image at document end with position validation.""" converter = PdfConverterWithOCR() pdf_path = TEST_DATA_DIR / "pdf_image_end.pdf" if not pdf_path.exists(): pytest.skip(f"Test file not found: {pdf_path}") - with open(pdf_path, 'rb') as f: - result = converter.convert(f, StreamInfo(extension=".pdf"), ocr_service=ocr_service) + with open(pdf_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=".pdf"), ocr_service=ocr_service + ) markdown = result.text_content - # Validate image appears after main content - assert "Main Content" in markdown, "Should have main content" - assert "Contact" in markdown or "support" in markdown, "Should extract OCR text" - - if "Main Content" in markdown and "[Image:" in markdown: - main_idx = markdown.index("Main Content") - img_idx = markdown.index("[Image:") - assert main_idx < img_idx, "Main content should appear before image" + # Validate with expected results + filename = pdf_path.name + if filename in EXPECTED_OCR_RESULTS: + for img_pos in EXPECTED_OCR_RESULTS[filename]: + success, message = validate_image_position(markdown, img_pos, verbose=True) + assert success, f"Position validation failed: {message}" + print(f" [PASS] {message}") -def test_docx_ocr_basic(ocr_service): - """Test DOCX OCR extraction without duplicates.""" +def test_docx_ocr_basic(ocr_service: Any) -> None: + """Test DOCX OCR extraction with position validation and no base64 check.""" converter = DocxConverterWithOCR() docx_path = TEST_DATA_DIR / "docx_complex_layout.docx" if not docx_path.exists(): pytest.skip(f"Test file not found: {docx_path}") - with open(docx_path, 'rb') as f: - result = converter.convert(f, StreamInfo(extension=".docx"), ocr_service=ocr_service) + with open(docx_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=".docx"), ocr_service=ocr_service + ) markdown = result.text_content + # Validate no base64 images + success, message = validate_no_base64_images(markdown) + assert success, message + print(f" ✓ {message}") + # Validate structure - assert "Complex Document" in markdown or "Security" in markdown, "Should have document content" - assert "[Image OCR:" in markdown or "NOTICE" in markdown or "SSL" in markdown, "Should extract OCR text" + assert "[Image OCR:" in markdown, "Should have OCR markers" # Ensure no duplicates (critical fix validation) if "NOTICE" in markdown: notice_count = markdown.count("NOTICE: SSL Certificate") - assert notice_count <= 1, f"OCR text should not be duplicated (found {notice_count} times)" + assert ( + notice_count <= 1 + ), f"OCR text should not be duplicated (found {notice_count} times)" + + # Validate expected OCR results with position tracking + filename = docx_path.name + if filename in EXPECTED_OCR_RESULTS: + for img_pos in EXPECTED_OCR_RESULTS[filename]: + success, message = validate_image_position(markdown, img_pos, verbose=True) + assert success, f"Position validation failed: {message}" + print(f" [PASS] {message}") -def test_docx_ocr_image_at_end(ocr_service): - """Test DOCX with image at document end.""" +def test_docx_ocr_image_at_end(ocr_service: Any) -> None: + """Test DOCX with image at document end with position validation.""" converter = DocxConverterWithOCR() docx_path = TEST_DATA_DIR / "docx_image_end.docx" if not docx_path.exists(): pytest.skip(f"Test file not found: {docx_path}") - with open(docx_path, 'rb') as f: - result = converter.convert(f, StreamInfo(extension=".docx"), ocr_service=ocr_service) + with open(docx_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=".docx"), ocr_service=ocr_service + ) markdown = result.text_content - assert "Report" in markdown or "findings" in markdown, "Should have document content" - assert "FOOTER" in markdown or "Document ID" in markdown, "Should extract OCR text at end" + # Validate no base64 images + success, message = validate_no_base64_images(markdown) + assert success, message + # Validate with expected results + filename = docx_path.name + if filename in EXPECTED_OCR_RESULTS: + for img_pos in EXPECTED_OCR_RESULTS[filename]: + success, message = validate_image_position(markdown, img_pos, verbose=True) + assert success, f"Position validation failed: {message}" + print(f" [PASS] {message}") -def test_xlsx_ocr_multisheet(ocr_service): + +def test_xlsx_ocr_multisheet(ocr_service: Any) -> None: """Test XLSX OCR with multi-sheet processing and cell references.""" converter = XlsxConverterWithOCR() xlsx_path = TEST_DATA_DIR / "xlsx_complex_layout.xlsx" @@ -145,8 +422,10 @@ def test_xlsx_ocr_multisheet(ocr_service): if not xlsx_path.exists(): pytest.skip(f"Test file not found: {xlsx_path}") - with open(xlsx_path, 'rb') as f: - result = converter.convert(f, StreamInfo(extension=".xlsx"), ocr_service=ocr_service) + with open(xlsx_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=".xlsx"), ocr_service=ocr_service + ) markdown = result.text_content # Validate multi-sheet processing @@ -158,11 +437,13 @@ def test_xlsx_ocr_multisheet(ocr_service): assert "cell" in markdown.lower(), "Should track cell references" # Check for OCR text - has_ocr = any(keyword in markdown for keyword in ["Figure", "Chart", "Monthly", "Trend"]) + has_ocr = any( + keyword in markdown for keyword in ["Figure", "Chart", "Monthly", "Trend"] + ) assert has_ocr, "Should extract OCR text from images" -def test_xlsx_ocr_cell_references(ocr_service): +def test_xlsx_ocr_cell_references(ocr_service: Any) -> None: """Test XLSX cell position tracking.""" converter = XlsxConverterWithOCR() xlsx_path = TEST_DATA_DIR / "xlsx_image_start.xlsx" @@ -170,18 +451,22 @@ def test_xlsx_ocr_cell_references(ocr_service): if not xlsx_path.exists(): pytest.skip(f"Test file not found: {xlsx_path}") - with open(xlsx_path, 'rb') as f: - result = converter.convert(f, StreamInfo(extension=".xlsx"), ocr_service=ocr_service) + with open(xlsx_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=".xlsx"), ocr_service=ocr_service + ) markdown = result.text_content # Validate cell references present assert "Image near cell" in markdown, "Should have cell reference tracking" # Check multiple sheets processed - assert "Sales Q1" in markdown or "Forecast" in markdown, "Should process named sheets" + assert ( + "Sales Q1" in markdown or "Forecast" in markdown + ), "Should process named sheets" -def test_pptx_ocr_basic(ocr_service): +def test_pptx_ocr_basic(ocr_service: Any) -> None: """Test PPTX OCR with alt text integration.""" converter = PptxConverterWithOCR() pptx_path = TEST_DATA_DIR / "pptx_complex_layout.pptx" @@ -189,17 +474,21 @@ def test_pptx_ocr_basic(ocr_service): if not pptx_path.exists(): pytest.skip(f"Test file not found: {pptx_path}") - with open(pptx_path, 'rb') as f: - result = converter.convert(f, StreamInfo(extension=".pptx"), ocr_service=ocr_service) + with open(pptx_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=".pptx"), ocr_service=ocr_service + ) markdown = result.text_content # Validate structure assert "Slide number:" in markdown, "Should have slide markers" - assert "Product Comparison" in markdown or "Market Share" in markdown, "Should have slide content" + assert ( + "Product Comparison" in markdown or "Market Share" in markdown + ), "Should have slide content" assert "![" in markdown, "Should have markdown images with OCR in alt text" -def test_pptx_ocr_multipage(ocr_service): +def test_pptx_ocr_multipage(ocr_service: Any) -> None: """Test PPTX with multiple slides.""" converter = PptxConverterWithOCR() pptx_path = TEST_DATA_DIR / "pptx_image_end.pptx" @@ -207,8 +496,10 @@ def test_pptx_ocr_multipage(ocr_service): if not pptx_path.exists(): pytest.skip(f"Test file not found: {pptx_path}") - with open(pptx_path, 'rb') as f: - result = converter.convert(f, StreamInfo(extension=".pptx"), ocr_service=ocr_service) + with open(pptx_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=".pptx"), ocr_service=ocr_service + ) markdown = result.text_content # Validate multiple slides @@ -216,30 +507,110 @@ def test_pptx_ocr_multipage(ocr_service): assert slide_count >= 2, f"Should have multiple slides (found {slide_count})" # Check OCR text in alt text - assert "Contact" in markdown or "info" in markdown or "techcorp" in markdown, "Should extract OCR text" + assert ( + "Contact" in markdown or "info" in markdown or "techcorp" in markdown + ), "Should extract OCR text" -def test_ocr_service_fallback(ocr_service): +def test_ocr_service_fallback(ocr_service: Any) -> None: """Test OCR service graceful handling.""" from PIL import Image import io # Create a simple test image - img = Image.new('RGB', (400, 100), color='white') + img = Image.new("RGB", (400, 100), color="white") from PIL import ImageDraw + draw = ImageDraw.Draw(img) - draw.text((10, 30), "Test Text", fill='black') + draw.text((10, 30), "Test Text", fill="black") img_stream = io.BytesIO() - img.save(img_stream, format='PNG') + img.save(img_stream, format="PNG") img_stream.seek(0) result = ocr_service.extract_text(img_stream) # Should either succeed or fail gracefully assert result is not None, "Should return result object" - assert hasattr(result, 'text'), "Result should have text attribute" - assert hasattr(result, 'backend_used'), "Result should have backend_used attribute" + assert hasattr(result, "text"), "Result should have text attribute" + assert hasattr(result, "backend_used"), "Result should have backend_used attribute" + + +@pytest.mark.parametrize( + "filename", + [ + "pdf_complex_layout.pdf", + "pdf_image_end.pdf", + "pdf_image_start.pdf", + "pdf_image_middle.pdf", + "pdf_multiple_images.pdf", + "pdf_multipage.pdf", + "docx_complex_layout.docx", + "docx_image_end.docx", + "docx_image_start.docx", + "docx_image_middle.docx", + "docx_multiple_images.docx", + "docx_multipage.docx", + ], +) +def test_comprehensive_ocr_positioning(ocr_service: Any, filename: str) -> None: + """ + Comprehensive test validating OCR text extraction and positioning for all test files. + + This test: + 1. Validates expected OCR text is extracted + 2. Validates image positioning relative to surrounding text + 3. For DOCX: validates no base64 images in output + 4. Compares extracted text against expected ground truth + """ + file_path = TEST_DATA_DIR / filename + + if not file_path.exists(): + pytest.skip(f"Test file not found: {file_path}") + + if filename not in EXPECTED_OCR_RESULTS: + pytest.skip(f"No expected results defined for {filename}") + + # Determine converter based on extension + converter: Any + if filename.endswith(".pdf"): + converter = PdfConverterWithOCR() + extension = ".pdf" + elif filename.endswith(".docx"): + converter = DocxConverterWithOCR() + extension = ".docx" + else: + pytest.skip(f"Unsupported file type for {filename}") + + # Convert document + print(f"\n{'='*60}") + print(f"Testing: {filename}") + print(f"{'='*60}") + + with open(file_path, "rb") as f: + result = converter.convert( + f, StreamInfo(extension=extension), ocr_service=ocr_service + ) + markdown = result.text_content + + # For DOCX files, validate no base64 images + if filename.endswith(".docx"): + success, message = validate_no_base64_images(markdown) + assert success, f"Base64 validation failed for {filename}: {message}" + print(f" [PASS] Base64 check: {message}") + + # Validate all expected image positions + expected_images = EXPECTED_OCR_RESULTS[filename] + print(f" Validating {len(expected_images)} image(s)...") + + for idx, img_pos in enumerate(expected_images, 1): + success, message = validate_image_position(markdown, img_pos, verbose=True) + assert success, f"Image {idx} validation failed for {filename}: {message}" + print(f" [PASS] Image {idx}: {message}") + + print( + f" [SUCCESS] All {len(expected_images)} images validated successfully for {filename}" + ) if __name__ == "__main__": From f4fab9be785c1677f646cb7515d5cef2d623e7bd Mon Sep 17 00:00:00 2001 From: Viktor Lesyk Date: Tue, 27 Jan 2026 11:16:00 +0100 Subject: [PATCH 03/10] Add support for scanned PDFs with full-page OCR fallback and implement tests --- README.md | 33 ++ .../converters/_pdf_converter_with_ocr.py | 106 ++++- .../ocr_test_data/pdf_scanned_invoice.pdf | Bin 0 -> 2643519 bytes .../pdf_scanned_meeting_minutes.pdf | Bin 0 -> 2643519 bytes .../ocr_test_data/pdf_scanned_minimal.pdf | Bin 0 -> 2643519 bytes .../ocr_test_data/pdf_scanned_report.pdf | Bin 0 -> 7924511 bytes .../pdf_scanned_sales_report.pdf | Bin 0 -> 2643519 bytes packages/markitdown/tests/test_ocr.py | 374 ++++++++++++++++++ 8 files changed, 511 insertions(+), 2 deletions(-) create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_scanned_invoice.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_scanned_meeting_minutes.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_scanned_minimal.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_scanned_report.pdf create mode 100644 packages/markitdown/tests/ocr_test_data/pdf_scanned_sales_report.pdf diff --git a/README.md b/README.md index 1adc1b6a4..6688df0f9 100644 --- a/README.md +++ b/README.md @@ -226,6 +226,39 @@ ocr_service = MultiBackendOCRService( OCR converters are available for PDF, DOCX, XLSX (multi-sheet), and PPTX formats. Images are extracted with context preservation (page numbers, cell references, relationship IDs). +#### Scanned PDF Support + +MarkItDown automatically detects scanned PDFs (documents with no extractable text) and falls back to full-page OCR. When a PDF extraction returns empty or whitespace-only results, the converter: + +1. Renders each page as a high-resolution image (300 DPI) +2. Performs OCR on the full page image +3. Preserves page structure with page markers +4. Indicates which OCR backend was used + +This works seamlessly with any OCR backend (Tesseract, EasyOCR, LLM Vision): + +```python +from markitdown.converters._ocr_service import MultiBackendOCRService, OCRBackend +from markitdown.converters._pdf_converter_with_ocr import PdfConverterWithOCR + +# Create OCR service +ocr_service = MultiBackendOCRService(backends=[OCRBackend.TESSERACT]) + +# Convert scanned PDF - fallback is automatic +converter = PdfConverterWithOCR() +with open("scanned_invoice.pdf", "rb") as f: + result = converter.convert(f, ocr_service=ocr_service) + print(result.text_content) +``` + +The fallback triggers automatically when: + +- PDF has no extractable text (truly scanned documents) +- Text extraction returns only whitespace +- No embedded text is found via pdfminer or pdfplumber + +No additional configuration is needed - just provide an OCR service and the converter handles the rest. + ### Docker ```sh diff --git a/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py b/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py index e075e0b1c..6b414d707 100644 --- a/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py +++ b/packages/markitdown/src/markitdown/converters/_pdf_converter_with_ocr.py @@ -10,7 +10,7 @@ from .._base_converter import DocumentConverter, DocumentConverterResult from .._stream_info import StreamInfo from .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE -from ._ocr_service import MultiBackendOCRService, OCRResult +from ._ocr_service import MultiBackendOCRService # Import dependencies _dependency_exc_info = None @@ -285,7 +285,7 @@ def convert( ) # type: ignore[union-attr] # Get OCR service if available - ocr_service: Optional[MultiBackendOCRService] = kwargs.get("ocr_service") + ocr_service: MultiBackendOCRService | None = kwargs.get("ocr_service") # Read PDF into BytesIO file_stream.seek(0) @@ -410,6 +410,12 @@ def convert( pdf_bytes.seek(0) markdown = pdfminer.high_level.extract_text(pdf_bytes) + # Final fallback: If still empty/whitespace and OCR is available, + # treat as scanned PDF and OCR full pages + if ocr_service and (not markdown or not markdown.strip()): + pdf_bytes.seek(0) + markdown = self._ocr_full_pages(pdf_bytes, ocr_service) + return DocumentConverterResult(markdown=markdown) def _extract_page_images(self, pdf_bytes: io.BytesIO, page_num: int) -> list[dict]: @@ -430,3 +436,99 @@ def _extract_page_images(self, pdf_bytes: io.BytesIO, page_num: int) -> list[dic images.sort(key=lambda x: x["y_pos"]) return images + + def _ocr_full_pages( + self, pdf_bytes: io.BytesIO, ocr_service: MultiBackendOCRService + ) -> str: + """ + Fallback for scanned PDFs: Convert entire pages to images and OCR them. + Used when text extraction returns empty/whitespace results. + + Args: + pdf_bytes: PDF file as BytesIO + ocr_service: OCR service to use + + Returns: + Markdown text extracted from OCR of full pages + """ + markdown_parts = [] + + try: + # Try using PyMuPDF for page rendering + pdf_bytes.seek(0) + doc = fitz.open(stream=pdf_bytes.read(), filetype="pdf") + + for page_num in range(len(doc)): + try: + page = doc[page_num] + markdown_parts.append(f"\n## Page {page_num + 1}\n") + + # Render page to image at high DPI for better OCR + # Using 300 DPI for good OCR quality + pix = page.get_pixmap(dpi=300) + + # Convert to PIL Image + img_data = pix.tobytes("png") + img_stream = io.BytesIO(img_data) + + # Run OCR on the full page image + ocr_result = ocr_service.extract_text(img_stream) + + if ocr_result.text.strip(): + markdown_parts.append(ocr_result.text.strip()) + if ocr_result.backend_used: + markdown_parts.append( + f"\n*(OCR: {ocr_result.backend_used})*\n" + ) + else: + markdown_parts.append( + "*[No text could be extracted from this page]*" + ) + + except Exception as e: + markdown_parts.append( + f"*[Error processing page {page_num + 1}: {str(e)}]*" + ) + continue + + doc.close() + + except Exception: + # Fallback to pdfplumber rendering if PyMuPDF fails + try: + pdf_bytes.seek(0) + with pdfplumber.open(pdf_bytes) as pdf: + for page_num, page in enumerate(pdf.pages, 1): + try: + markdown_parts.append(f"\n## Page {page_num}\n") + + # Render page to image + page_img = page.to_image(resolution=300) + img_stream = io.BytesIO() + page_img.original.save(img_stream, format="PNG") + img_stream.seek(0) + + # Run OCR + ocr_result = ocr_service.extract_text(img_stream) + + if ocr_result.text.strip(): + markdown_parts.append(ocr_result.text.strip()) + if ocr_result.backend_used: + markdown_parts.append( + f"\n*(OCR: {ocr_result.backend_used})*\n" + ) + else: + markdown_parts.append( + "*[No text could be extracted from this page]*" + ) + + except Exception as e: + markdown_parts.append( + f"*[Error processing page {page_num}: {str(e)}]*" + ) + continue + + except Exception: + return "*[Error: Could not process scanned PDF]*" + + return "\n\n".join(markdown_parts).strip() diff --git a/packages/markitdown/tests/ocr_test_data/pdf_scanned_invoice.pdf b/packages/markitdown/tests/ocr_test_data/pdf_scanned_invoice.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5e1caacc51e7812908631ea75ce88403e21213c2 GIT binary patch literal 2643519 zcmeF)XPgy9`u}|}lN3Y+Gl-a#U_wP$6(a^fQCUnx1r|`jv}Vk*Yrvdk4XBv2ASh$t%o1kyREivyxGPrI&9Q_-!?slkL)vYK#R6*dJGsb z{IEm&slC4+tB2Zt=m0h7kH)KU!$#`Uh~6E3-xfCP_k)Lr`hTr!v-@FvNB&N+<4_s2 z=`x_-@csi-<>*h7Q^wLY&JAUxN2bW!T*&ciB(WXtC<(FT6 z(M1;(QHvHWcG_vD6Hh$x)mLB5-rcvBRq~QyV&=@5I!85l_0?BjYN@3bS!9tWO`5cB z-CFHA_uO+o{q)nYaB6zpb=UQiEt*($)m2mLBohGy5I_I{1YF>rd+xD2?7sW%>zS5# z`st@_)7D#W9c?Q6v25fJ##g#!fA`&YW$RRdQt{QKNs~NIXxp}Jo~pt!UwrX}MUtvy zIMWZoBPLkLZ~?k%0pT ze*XFA(Z1nF;;T@DGy(`9fB*v3E^yp&$JwpmskARr%#`