test_watermark_processor.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. """WatermarkProcessor 与 preset 单测。"""
  2. import numpy as np
  3. import pytest
  4. from ocr_utils.watermark import WatermarkProcessor, merge_watermark_config, get_preset
  5. def test_merge_cell_preset_has_mask():
  6. cfg = merge_watermark_config("cell", {"method": "masked_adaptive"})
  7. assert cfg["method"] == "masked_adaptive"
  8. assert "mask" in cfg
  9. assert cfg["mask"]["hough_min_line_length"] < get_preset("page", "masked_adaptive")["mask"][
  10. "hough_min_line_length"
  11. ]
  12. def test_processor_disabled_passthrough():
  13. proc = WatermarkProcessor({"enabled": False}, scope="cell")
  14. img = np.ones((40, 80, 3), dtype=np.uint8) * 255
  15. out, stages = proc.process(img)
  16. assert stages == []
  17. assert out.shape == img.shape
  18. def test_processor_cell_force_wm():
  19. proc = WatermarkProcessor(
  20. {"enabled": True, "method": "masked_adaptive"}, scope="cell"
  21. )
  22. img = np.ones((50, 100, 3), dtype=np.uint8) * 240
  23. cv2 = pytest.importorskip("cv2")
  24. for x in range(0, 100, 8):
  25. cv2.line(img, (x, 0), (x + 30, 50), (180, 180, 180), 1)
  26. out, stages = proc.process(img, force=True)
  27. assert "wm" in stages
  28. assert out.shape == img.shape