test_formula_recognition.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import pytest
  2. from paddleocr import FormulaRecognitionPipeline
  3. from ..testing_utils import (
  4. TEST_DATA_DIR,
  5. check_simple_inference_result,
  6. check_wrapper_simple_inference_param_forwarding,
  7. )
  8. @pytest.fixture(scope="module")
  9. def formula_recognition_engine() -> FormulaRecognitionPipeline:
  10. return FormulaRecognitionPipeline()
  11. # TODO: Should we separate unit tests and integration tests?
  12. @pytest.mark.parametrize(
  13. "image_path",
  14. [
  15. TEST_DATA_DIR / "doc_with_formula.png",
  16. ],
  17. )
  18. def test_predict(
  19. formula_recognition_engine: FormulaRecognitionPipeline, image_path: str
  20. ) -> None:
  21. """
  22. Test FormulaRecognitionPipeline's formula_recognition functionality.
  23. Args:
  24. formula_recognition_engine: An instance of `FormulaRecognitionPipeline`.
  25. image_path: Path to the image to be processed.
  26. """
  27. result = formula_recognition_engine.predict(str(image_path))
  28. check_simple_inference_result(result)
  29. res = result[0]
  30. assert isinstance(res["formula_res_list"], list)
  31. assert len(res["formula_res_list"]) > 0
  32. # TODO: Also check passing `None`
  33. @pytest.mark.parametrize(
  34. "params",
  35. [
  36. {"use_doc_orientation_classify": False},
  37. {"use_doc_unwarping": False},
  38. {"use_layout_detection": False},
  39. {"layout_threshold": 0.5},
  40. {"layout_nms": True},
  41. {"layout_unclip_ratio": 1.5},
  42. {"layout_merge_bboxes_mode": "large"},
  43. ],
  44. )
  45. def test_predict_params(
  46. monkeypatch,
  47. formula_recognition_engine: FormulaRecognitionPipeline,
  48. params: dict,
  49. ) -> None:
  50. check_wrapper_simple_inference_param_forwarding(
  51. monkeypatch,
  52. formula_recognition_engine,
  53. "paddlex_pipeline",
  54. "dummy_path",
  55. params,
  56. )
  57. # TODO: Test init params