From 1040729874cb4f4ff1f08ccd75413473fc1e9225 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Fri, 27 Feb 2026 20:06:20 +0100 Subject: [PATCH] fix(ocr-pipeline): avoid backslash in f-string for Python 3.11 compat Use format() instead of nested f-strings with escaped quotes. Co-Authored-By: Claude Opus 4.6 --- klausur-service/backend/cv_vocab_pipeline.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/klausur-service/backend/cv_vocab_pipeline.py b/klausur-service/backend/cv_vocab_pipeline.py index 998b7c3..4069a1e 100644 --- a/klausur-service/backend/cv_vocab_pipeline.py +++ b/klausur-service/backend/cv_vocab_pipeline.py @@ -987,9 +987,9 @@ def detect_column_geometry(ocr_img: np.ndarray, dewarped_bgr: np.ndarray) -> Opt 'y_coverage': y_coverage, }) + _ci_summary = [(ci['mean_x']+left_x, ci['count'], format(ci['y_coverage'], '.0%')) for ci in cluster_infos[:12]] logger.info(f"ColumnGeometry: {len(cluster_infos)} clusters with >=2 words " - f"(from {len(clusters)} total), y_coverage: " - f"{[(ci['mean_x']+left_x, ci['count'], f\"{ci['y_coverage']:.0%}\") for ci in cluster_infos[:12]]}") + f"(from {len(clusters)} total), y_coverage: {_ci_summary}") # Primary: good vertical coverage primary = [c for c in cluster_infos if c['y_coverage'] >= MIN_Y_COVERAGE_PRIMARY] @@ -1002,9 +1002,9 @@ def detect_column_geometry(ocr_img: np.ndarray, dewarped_bgr: np.ndarray) -> Opt significant = sorted(primary + secondary, key=lambda c: c['mean_x']) + _sig_summary = [(s['mean_x']+left_x, s['count'], format(s['y_coverage'], '.0%')) for s in significant[:10]] logger.info(f"ColumnGeometry: {len(significant)} significant clusters " - f"(primary={len(primary)}, secondary={len(secondary)}): " - f"{[(s['mean_x']+left_x, s['count'], f\"{s['y_coverage']:.0%}\") for s in significant[:10]]}") + f"(primary={len(primary)}, secondary={len(secondary)}): {_sig_summary}") if len(significant) < 3: logger.info("ColumnGeometry: < 3 clusters after verticality filter, signaling fallback") @@ -1028,8 +1028,8 @@ def detect_column_geometry(ocr_img: np.ndarray, dewarped_bgr: np.ndarray) -> Opt else: merged.append(s.copy()) - logger.info(f"ColumnGeometry: {len(merged)} clusters after merging (dist={merge_distance}px): " - f"{[(m['mean_x']+left_x, m['count'], f\"{m['y_coverage']:.0%}\") for m in merged]}") + _merged_summary = [(m['mean_x']+left_x, m['count'], format(m['y_coverage'], '.0%')) for m in merged] + logger.info(f"ColumnGeometry: {len(merged)} clusters after merging (dist={merge_distance}px): {_merged_summary}") if len(merged) < 3: logger.info("ColumnGeometry: < 3 merged clusters, signaling fallback")