fix: remove padding from GLMOCREndToEndService and clean up ruff violations

- Drop image padding in GLMOCREndToEndService.recognize(); use raw image directly
- Fix F821 undefined `padded` references replaced with `image`
- Fix F601 duplicate dict key "≠" in converter
- Fix F841 unused `image_cls_ids` variable in layout_postprocess
- Fix E702 semicolon-separated statements in layout_postprocess
- Fix UP031 percent-format replaced with f-string in logging_config
- Auto-fix 44 additional ruff violations (import order, UP035/UP045/UP006, F401, F541)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
liuyuanchuang
2026-03-10 19:52:22 +08:00
parent f8173f7c0a
commit 30d2c2f45b
16 changed files with 162 additions and 140 deletions

View File

@@ -57,12 +57,22 @@ def test_merge_formula_numbers_merges_before_and_after_formula():
before = formatter._merge_formula_numbers(
[
{"index": 0, "label": "text", "native_label": "formula_number", "content": "(1)"},
{"index": 1, "label": "formula", "native_label": "display_formula", "content": "$$\nx+y\n$$"},
{
"index": 1,
"label": "formula",
"native_label": "display_formula",
"content": "$$\nx+y\n$$",
},
]
)
after = formatter._merge_formula_numbers(
[
{"index": 0, "label": "formula", "native_label": "display_formula", "content": "$$\nx+y\n$$"},
{
"index": 0,
"label": "formula",
"native_label": "display_formula",
"content": "$$\nx+y\n$$",
},
{"index": 1, "label": "text", "native_label": "formula_number", "content": "(2)"},
]
)

View File

@@ -23,7 +23,9 @@ def test_detect_applies_postprocess_and_keeps_native_label(monkeypatch):
calls = {}
def fake_apply_layout_postprocess(boxes, img_size, layout_nms, layout_unclip_ratio, layout_merge_bboxes_mode):
def fake_apply_layout_postprocess(
boxes, img_size, layout_nms, layout_unclip_ratio, layout_merge_bboxes_mode
):
calls["args"] = {
"boxes": boxes,
"img_size": img_size,
@@ -33,7 +35,9 @@ def test_detect_applies_postprocess_and_keeps_native_label(monkeypatch):
}
return [boxes[0], boxes[2]]
monkeypatch.setattr("app.services.layout_detector.apply_layout_postprocess", fake_apply_layout_postprocess)
monkeypatch.setattr(
"app.services.layout_detector.apply_layout_postprocess", fake_apply_layout_postprocess
)
image = np.zeros((200, 100, 3), dtype=np.uint8)
info = detector.detect(image)

View File

@@ -146,6 +146,4 @@ def test_apply_layout_postprocess_clamps_skips_invalid_and_filters_large_image()
layout_merge_bboxes_mode=None,
)
assert result == [
{"cls_id": 0, "label": "text", "score": 0.95, "coordinate": [0, 0, 40, 50]}
]
assert result == [{"cls_id": 0, "label": "text", "score": 0.95, "coordinate": [0, 0, 40, 50]}]

View File

@@ -46,7 +46,9 @@ def test_encode_region_returns_decodable_base64_jpeg():
image[:, :] = [0, 128, 255]
encoded = service._encode_region(image)
decoded = cv2.imdecode(np.frombuffer(base64.b64decode(encoded), dtype=np.uint8), cv2.IMREAD_COLOR)
decoded = cv2.imdecode(
np.frombuffer(base64.b64decode(encoded), dtype=np.uint8), cv2.IMREAD_COLOR
)
assert decoded.shape[:2] == image.shape[:2]
@@ -71,7 +73,9 @@ def test_call_vllm_builds_messages_and_returns_content():
assert captured["model"] == "glm-ocr"
assert captured["max_tokens"] == 1024
assert captured["messages"][0]["content"][0]["type"] == "image_url"
assert captured["messages"][0]["content"][0]["image_url"]["url"].startswith("data:image/jpeg;base64,")
assert captured["messages"][0]["content"][0]["image_url"]["url"].startswith(
"data:image/jpeg;base64,"
)
assert captured["messages"][0]["content"][1] == {"type": "text", "text": "Formula Recognition:"}
@@ -98,9 +102,19 @@ def test_recognize_falls_back_to_full_image_when_no_layout_regions(monkeypatch):
def test_recognize_skips_figures_keeps_order_and_postprocesses(monkeypatch):
regions = [
LayoutRegion(type="text", native_label="doc_title", bbox=[0, 0, 10, 10], confidence=0.9, score=0.9),
LayoutRegion(type="figure", native_label="image", bbox=[10, 10, 20, 20], confidence=0.8, score=0.8),
LayoutRegion(type="formula", native_label="display_formula", bbox=[20, 20, 40, 40], confidence=0.95, score=0.95),
LayoutRegion(
type="text", native_label="doc_title", bbox=[0, 0, 10, 10], confidence=0.9, score=0.9
),
LayoutRegion(
type="figure", native_label="image", bbox=[10, 10, 20, 20], confidence=0.8, score=0.8
),
LayoutRegion(
type="formula",
native_label="display_formula",
bbox=[20, 20, 40, 40],
confidence=0.95,
score=0.95,
),
]
service = _build_service(regions=regions)
image = np.zeros((40, 40, 3), dtype=np.uint8)