From 911f3523ab94472bd9a1f8ecbd2493437058daee Mon Sep 17 00:00:00 2001 From: Sebastian Husch Lee Date: Mon, 4 Nov 2024 09:26:57 +0100 Subject: [PATCH] feat: Increase logging transparency for empty Documents during conversion (#8509) * Add log lines for PDF conversion and make skipping more explicit in DocumentSplitter * Add logging statement for PDFMinerToDocument as well * Add tests * Remove unused line * Remove unused line * add reno * Add in PDF file * Update checks in PDF converters and add tests for document splitter * Revert * Remove line * Fix comment * Make mypy happy * Make mypy happy --- haystack/components/converters/pdfminer.py | 12 ++++++++--- haystack/components/converters/pypdf.py | 10 +++++++-- .../preprocessors/document_splitter.py | 10 +++++++-- ...logs-empty-files-pdf-f28a14e52984c1ea.yaml | 7 +++++++ .../converters/test_pdfminer_to_document.py | 8 ++++++++ .../converters/test_pypdf_to_document.py | 15 ++++++++++++-- .../preprocessors/test_document_splitter.py | 19 ++++++++++++++++++ test/test_files/pdf/non_text_searchable.pdf | Bin 0 -> 70489 bytes 8 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 releasenotes/notes/add-logs-empty-files-pdf-f28a14e52984c1ea.yaml create mode 100644 test/test_files/pdf/non_text_searchable.pdf diff --git a/haystack/components/converters/pdfminer.py b/haystack/components/converters/pdfminer.py index b105e2fca6..acf9db28f2 100644 --- a/haystack/components/converters/pdfminer.py +++ b/haystack/components/converters/pdfminer.py @@ -37,7 +37,7 @@ class PDFMinerToDocument: ``` """ - def __init__( + def __init__( # pylint: disable=too-many-positional-arguments self, line_overlap: float = 0.5, char_margin: float = 2.0, @@ -92,7 +92,7 @@ def __init__( all_texts=all_texts, ) - def __converter(self, extractor) -> Document: + def _converter(self, extractor) -> Document: """ Extracts text from PDF pages then convert the text into Documents @@ -151,13 +151,19 @@ def run( continue try: pdf_reader = extract_pages(io.BytesIO(bytestream.data), laparams=self.layout_params) - document = self.__converter(pdf_reader) + document = self._converter(pdf_reader) except Exception as e: logger.warning( "Could not read {source} and convert it to Document, skipping. {error}", source=source, error=e ) continue + if document.content is None or document.content.strip() == "": + logger.warning( + "PDFMinerToDocument could not extract text from the file {source}. Returning an empty document.", + source=source, + ) + merged_metadata = {**bytestream.meta, **metadata} document.meta = merged_metadata documents.append(document) diff --git a/haystack/components/converters/pypdf.py b/haystack/components/converters/pypdf.py index 86d3e1c60e..72fbcdc161 100644 --- a/haystack/components/converters/pypdf.py +++ b/haystack/components/converters/pypdf.py @@ -90,10 +90,10 @@ def from_dict(cls, data): :returns: Deserialized component. """ - custom_converter_data = data["init_parameters"]["converter"] + init_parameters = data.get("init_parameters", {}) + custom_converter_data = init_parameters.get("converter") if custom_converter_data is not None: data["init_parameters"]["converter"] = deserialize_class_instance(custom_converter_data) - return default_from_dict(cls, data) def _default_convert(self, reader: "PdfReader") -> Document: @@ -142,6 +142,12 @@ def run( ) continue + if document.content is None or document.content.strip() == "": + logger.warning( + "PyPDFToDocument could not extract text from the file {source}. Returning an empty document.", + source=source, + ) + merged_metadata = {**bytestream.meta, **metadata} document.meta = merged_metadata documents.append(document) diff --git a/haystack/components/preprocessors/document_splitter.py b/haystack/components/preprocessors/document_splitter.py index 556878a965..2abdb41dd4 100644 --- a/haystack/components/preprocessors/document_splitter.py +++ b/haystack/components/preprocessors/document_splitter.py @@ -7,10 +7,12 @@ from more_itertools import windowed -from haystack import Document, component +from haystack import Document, component, logging from haystack.core.serialization import default_from_dict, default_to_dict from haystack.utils import deserialize_callable, serialize_callable +logger = logging.getLogger(__name__) + @component class DocumentSplitter: @@ -46,7 +48,7 @@ class DocumentSplitter: ``` """ - def __init__( + def __init__( # pylint: disable=too-many-positional-arguments self, split_by: Literal["function", "page", "passage", "sentence", "word"] = "word", split_length: int = 200, @@ -112,6 +114,9 @@ def run(self, documents: List[Document]): raise ValueError( f"DocumentSplitter only works with text documents but content for document ID {doc.id} is None." ) + if doc.content == "": + logger.warning("Document ID {doc_id} has an empty content. Skipping this document.", doc_id=doc.id) + continue units = self._split_into_units(doc.content, self.split_by) text_splits, splits_pages, splits_start_idxs = self._concatenate_units( units, self.split_length, self.split_overlap, self.split_threshold @@ -173,6 +178,7 @@ def _concatenate_units( # concatenate the last split with the current one text_splits[-1] += txt + # NOTE: This line skips documents that have content="" elif len(txt) > 0: text_splits.append(txt) splits_pages.append(cur_page) diff --git a/releasenotes/notes/add-logs-empty-files-pdf-f28a14e52984c1ea.yaml b/releasenotes/notes/add-logs-empty-files-pdf-f28a14e52984c1ea.yaml new file mode 100644 index 0000000000..dd5637dba0 --- /dev/null +++ b/releasenotes/notes/add-logs-empty-files-pdf-f28a14e52984c1ea.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + Add warning logs to the PDFMinerToDocument and PyPDFToDocument to indicate when a processed PDF file has no content. + This can happen if the PDF file is a scanned image. + Also added an explicit check and warning message to the DocumentSplitter that warns the user that empty Documents are skipped. + This behavior was already occurring, but now its clearer through logs that this is happening. diff --git a/test/components/converters/test_pdfminer_to_document.py b/test/components/converters/test_pdfminer_to_document.py index 0cd47df8f3..53dececbee 100644 --- a/test/components/converters/test_pdfminer_to_document.py +++ b/test/components/converters/test_pdfminer_to_document.py @@ -126,3 +126,11 @@ def test_run_error_handling(self, caplog): results = converter.run(sources=sources) assert "Could not read non_existing_file.pdf" in caplog.text assert results["documents"] == [] + + def test_run_empty_document(self, caplog, test_files_path): + sources = [test_files_path / "pdf" / "non_text_searchable.pdf"] + converter = PDFMinerToDocument() + with caplog.at_level(logging.WARNING): + results = converter.run(sources=sources) + assert "PDFMinerToDocument could not extract text from the file" in caplog.text + assert results["documents"][0].content == "" diff --git a/test/components/converters/test_pypdf_to_document.py b/test/components/converters/test_pypdf_to_document.py index 79a757f37d..234b545eac 100644 --- a/test/components/converters/test_pypdf_to_document.py +++ b/test/components/converters/test_pypdf_to_document.py @@ -63,9 +63,13 @@ def test_from_dict(self): assert isinstance(instance, PyPDFToDocument) assert instance.converter is None + def test_from_dict_defaults(self): + data = {"type": "haystack.components.converters.pypdf.PyPDFToDocument", "init_parameters": {}} + instance = PyPDFToDocument.from_dict(data) + assert isinstance(instance, PyPDFToDocument) + assert instance.converter is None + def test_from_dict_custom_converter(self): - pypdf_converter = PyPDFToDocument(converter=CustomConverter()) - data = pypdf_converter.to_dict() data = { "type": "haystack.components.converters.pypdf.PyPDFToDocument", "init_parameters": { @@ -161,3 +165,10 @@ def from_dict(cls, data): assert len(docs) == 1 assert "ReAct" not in docs[0].content assert "I don't care about converting given pdfs, I always return this" in docs[0].content + + def test_run_empty_document(self, caplog, test_files_path): + paths = [test_files_path / "pdf" / "non_text_searchable.pdf"] + with caplog.at_level(logging.WARNING): + output = PyPDFToDocument().run(sources=paths) + assert "PyPDFToDocument could not extract text from the file" in caplog.text + assert output["documents"][0].content == "" diff --git a/test/components/preprocessors/test_document_splitter.py b/test/components/preprocessors/test_document_splitter.py index 7c942ab4cc..aecb853175 100644 --- a/test/components/preprocessors/test_document_splitter.py +++ b/test/components/preprocessors/test_document_splitter.py @@ -43,6 +43,7 @@ def test_non_text_document(self): ): splitter = DocumentSplitter() splitter.run(documents=[Document()]) + assert "DocumentSplitter only works with text documents but content for document ID" in caplog.text def test_single_doc(self): with pytest.raises(TypeError, match="DocumentSplitter expects a List of Documents as input."): @@ -445,3 +446,21 @@ def test_roundtrip_serialization_with_splitting_function(self): assert original_splitter.split_by == deserialized_splitter.split_by assert callable(deserialized_splitter.splitting_function) assert deserialized_splitter.splitting_function("a.b.c") == ["a", "b", "c"] + + def test_run_empty_document(self): + """ + Test if the component runs correctly with an empty document. + """ + splitter = DocumentSplitter() + doc = Document(content="") + results = splitter.run([doc]) + assert results["documents"] == [] + + def test_run_document_only_whitespaces(self): + """ + Test if the component runs correctly with a document containing only whitespaces. + """ + splitter = DocumentSplitter() + doc = Document(content=" ") + results = splitter.run([doc]) + assert results["documents"][0].content == " " diff --git a/test/test_files/pdf/non_text_searchable.pdf b/test/test_files/pdf/non_text_searchable.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3579aed51b3b2e63b77a356692c8e2b6bffc8b08 GIT binary patch literal 70489 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�l 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 K<<&7dPxWv6dAKD2 literal 0 HcmV?d00001