mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-16 23:13:31 +00:00
community[minor]: 05 - Refactoring PyPDFium2 parser (#29625)
This is one part of a larger Pull Request (PR) that is too large to be submitted all at once. This specific part focuses on updating the PyPDFium2 parser. For more details, see https://github.com/langchain-ai/langchain/pull/28970.
This commit is contained in:
@@ -12,7 +12,6 @@ from langchain_community.document_loaders.blob_loaders import Blob
|
||||
from langchain_community.document_loaders.parsers import (
|
||||
BaseImageBlobParser,
|
||||
PDFPlumberParser,
|
||||
PyPDFium2Parser,
|
||||
)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -96,12 +95,6 @@ def _assert_with_duplicate_parser(parser: BaseBlobParser, dedupe: bool = False)
|
||||
assert "11000000 SSeerriieess" == docs[0].page_content.split("\n")[0]
|
||||
|
||||
|
||||
def test_pypdfium2_parser() -> None:
|
||||
"""Test PyPDFium2 parser."""
|
||||
# Does not follow defaults to split by page.
|
||||
_assert_with_parser(PyPDFium2Parser())
|
||||
|
||||
|
||||
def test_pdfplumber_parser() -> None:
|
||||
"""Test PDFPlumber parser."""
|
||||
_assert_with_parser(PDFPlumberParser())
|
||||
@@ -109,11 +102,6 @@ def test_pdfplumber_parser() -> None:
|
||||
_assert_with_duplicate_parser(PDFPlumberParser(dedupe=True), dedupe=True)
|
||||
|
||||
|
||||
def test_extract_images_text_from_pdf_pypdfium2parser() -> None:
|
||||
"""Test extract image from pdf and recognize text with rapid ocr - PyPDFium2Parser""" # noqa: E501
|
||||
_assert_with_parser(PyPDFium2Parser(extract_images=True))
|
||||
|
||||
|
||||
class EmptyImageBlobParser(BaseImageBlobParser):
|
||||
def _analyze_image(self, img: "Image") -> str:
|
||||
return "Hello world"
|
||||
@@ -128,6 +116,7 @@ class EmptyImageBlobParser(BaseImageBlobParser):
|
||||
[
|
||||
("PDFMinerParser", {}),
|
||||
("PyMuPDFParser", {}),
|
||||
("PyPDFium2Parser", {}),
|
||||
("PyPDFParser", {"extraction_mode": "plain"}),
|
||||
("PyPDFParser", {"extraction_mode": "layout"}),
|
||||
],
|
||||
@@ -157,6 +146,7 @@ def test_mode_and_extract_images_variations(
|
||||
[
|
||||
("PDFMinerParser", {}),
|
||||
("PyMuPDFParser", {}),
|
||||
("PyPDFium2Parser", {}),
|
||||
("PyPDFParser", {"extraction_mode": "plain"}),
|
||||
("PyPDFParser", {"extraction_mode": "layout"}),
|
||||
],
|
||||
|
@@ -9,7 +9,6 @@ from langchain_community.document_loaders import (
|
||||
AmazonTextractPDFLoader,
|
||||
MathpixPDFLoader,
|
||||
PDFMinerPDFasHTMLLoader,
|
||||
PyPDFium2Loader,
|
||||
UnstructuredPDFLoader,
|
||||
)
|
||||
|
||||
@@ -56,21 +55,6 @@ def test_pdfminer_pdf_as_html_loader() -> None:
|
||||
assert len(docs) == 1
|
||||
|
||||
|
||||
def test_pypdfium2_loader() -> None:
|
||||
"""Test PyPDFium2Loader."""
|
||||
file_path = Path(__file__).parent.parent / "examples/hello.pdf"
|
||||
loader = PyPDFium2Loader(file_path)
|
||||
docs = loader.load()
|
||||
|
||||
assert len(docs) == 1
|
||||
|
||||
file_path = Path(__file__).parent.parent / "examples/layout-parser-paper.pdf"
|
||||
loader = PyPDFium2Loader(file_path)
|
||||
|
||||
docs = loader.load()
|
||||
assert len(docs) == 16
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
not os.environ.get("MATHPIX_API_KEY"), reason="Mathpix API key not found"
|
||||
)
|
||||
@@ -184,6 +168,7 @@ def test_amazontextract_loader_failures() -> None:
|
||||
[
|
||||
("PDFMinerLoader", {}),
|
||||
("PyMuPDFLoader", {}),
|
||||
("PyPDFium2Loader", {}),
|
||||
("PyPDFLoader", {}),
|
||||
],
|
||||
)
|
||||
@@ -206,8 +191,6 @@ def test_standard_parameters(
|
||||
images_parser=None,
|
||||
images_inner_format="text",
|
||||
password=None,
|
||||
extract_tables=None,
|
||||
extract_tables_settings=None,
|
||||
)
|
||||
docs = loader.load()
|
||||
assert len(docs) == 16
|
||||
|
Reference in New Issue
Block a user