Complete local hybrid search and improve agent reliability
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from io import BytesIO
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
from PIL import Image
|
||||
|
||||
from app.local_ocr import LocalOCRError, _sort_reading_order, recognize_image_text
|
||||
|
||||
|
||||
def box(left: int, top: int, right: int, bottom: int):
|
||||
return [[left, top], [right, top], [right, bottom], [left, bottom]]
|
||||
|
||||
|
||||
class LocalOcrTests(unittest.TestCase):
|
||||
def test_text_detections_are_ordered_by_rows_and_language_direction(self) -> None:
|
||||
detections = [
|
||||
(box(10, 100, 100, 120), "Place: Amman", 0.9),
|
||||
(box(400, 100, 520, 120), "المكان: عمان", 0.8),
|
||||
(box(10, 10, 100, 30), "COMMUNITY", 0.9),
|
||||
(box(400, 10, 520, 30), "لقاء القراءة", 0.8),
|
||||
]
|
||||
|
||||
ordered = _sort_reading_order(detections)
|
||||
|
||||
self.assertEqual(
|
||||
[text for _box, text, _confidence in ordered],
|
||||
["لقاء القراءة", "COMMUNITY", "المكان: عمان", "Place: Amman"],
|
||||
)
|
||||
|
||||
def test_image_pixel_limit_is_checked_before_loading_ocr_model(self) -> None:
|
||||
output = BytesIO()
|
||||
Image.new("RGB", (1500, 1400), "white").save(output, format="JPEG")
|
||||
|
||||
with patch("app.local_ocr._get_reader") as get_reader:
|
||||
with self.assertRaises(LocalOCRError):
|
||||
recognize_image_text(output.getvalue(), label="large test")
|
||||
|
||||
get_reader.assert_not_called()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user