PaddleOCR/tests/test_paddleocr_api.py

117 lines
3.1 KiB
Python

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)