from typing import Any import pytest from paddleocr import PaddleOCR, PPStructure # Test image paths IMAGE_PATHS_OCR = ["./doc/imgs_en/254.jpg", "./doc/imgs_en/img_10.jpg"] IMAGE_PATHS_STRUCTURE = [ "./ppstructure/docs/table/layout.jpg", "./ppstructure/docs/table/1.png", ] @pytest.fixture(params=["en", "ch"]) def ocr_engine(request: Any) -> PaddleOCR: """ Initialize PaddleOCR engine with different languages. Args: request: pytest fixture request object. Returns: An instance of PaddleOCR. """ return PaddleOCR(lang=request.param) def test_ocr_initialization(ocr_engine: PaddleOCR) -> None: """ Test PaddleOCR initialization. Args: ocr_engine: An instance of PaddleOCR. """ assert ocr_engine is not None @pytest.mark.parametrize("image_path", IMAGE_PATHS_OCR) def test_ocr_function(ocr_engine: PaddleOCR, image_path: str) -> None: """ Test PaddleOCR OCR functionality with different images. Args: ocr_engine: An instance of PaddleOCR. image_path: Path to the image to be processed. """ result = ocr_engine.ocr(image_path) assert result is not None assert isinstance(result, list) @pytest.mark.parametrize("image_path", IMAGE_PATHS_OCR) def test_ocr_det_only(ocr_engine: PaddleOCR, image_path: str) -> None: """ Test PaddleOCR OCR functionality with detection only. Args: ocr_engine: An instance of PaddleOCR. image_path: Path to the image to be processed. """ result = ocr_engine.ocr(image_path, det=True, rec=False) assert result is not None assert isinstance(result, list) @pytest.mark.parametrize("image_path", IMAGE_PATHS_OCR) def test_ocr_rec_only(ocr_engine: PaddleOCR, image_path: str) -> None: """ Test PaddleOCR OCR functionality with recognition only. Args: ocr_engine: An instance of PaddleOCR. image_path: Path to the image to be processed. """ result = ocr_engine.ocr(image_path, det=False, rec=True) assert result is not None assert isinstance(result, list) @pytest.fixture(params=["en", "ch"]) def structure_engine(request: Any) -> PPStructure: """ Initialize PPStructure engine with different languages. Args: request: pytest fixture request object. Returns: An instance of PPStructure. """ return PPStructure(lang=request.param) def test_structure_initialization(structure_engine: PPStructure) -> None: """ Test PPStructure initialization. Args: structure_engine: An instance of PPStructure. """ assert structure_engine is not None @pytest.mark.parametrize("image_path", IMAGE_PATHS_STRUCTURE) def test_structure_function(structure_engine: PPStructure, image_path: str) -> None: """ Test PPStructure structure analysis functionality with different images. Args: structure_engine: An instance of PPStructure. image_path: Path to the image to be processed. """ result = structure_engine(image_path) assert result is not None assert isinstance(result, list)