Spaces:
Sleeping
Sleeping
Claude commited on
Commit ·
57311b9
1
Parent(s): 5d7e317
chore: track *.traineddata via LFS + Gill Sans font->model mapping
Browse files- .gitattributes +2 -0
- smoke_signal/scripts/font_library.py +17 -0
.gitattributes
CHANGED
|
@@ -34,3 +34,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
smoke_signal/tessdata/gill_sans_infant.traineddata.otf filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
smoke_signal/tessdata/gill_sans_infant.traineddata.otf filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
*.traineddata filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
*.otf filter=lfs diff=lfs merge=lfs -text
|
smoke_signal/scripts/font_library.py
CHANGED
|
@@ -275,6 +275,16 @@ def register_font_model(
|
|
| 275 |
return {"ok": True, "font_name": font_name, "tesseract_model": model}
|
| 276 |
|
| 277 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 278 |
def resolve_tesseract_lang(font_name: Optional[str]) -> str:
|
| 279 |
"""
|
| 280 |
Return best tesseract language/model to use for this font.
|
|
@@ -283,6 +293,13 @@ def resolve_tesseract_lang(font_name: Optional[str]) -> str:
|
|
| 283 |
if not font_name:
|
| 284 |
return "eng"
|
| 285 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 286 |
registry = _load_registry()
|
| 287 |
entry = registry.get(font_name, {})
|
| 288 |
candidates = []
|
|
|
|
| 275 |
return {"ok": True, "font_name": font_name, "tesseract_model": model}
|
| 276 |
|
| 277 |
|
| 278 |
+
# Static font name → model name mapping.
|
| 279 |
+
# Handles cases where the slug doesn't match the traineddata filename.
|
| 280 |
+
FONT_MODEL_MAP: dict[str, str] = {
|
| 281 |
+
"gill sans infant": "gill_sans_infant",
|
| 282 |
+
"gill sans": "gill_sans_infant", # MixFont may return either name
|
| 283 |
+
"gill sans mt": "gill_sans_infant",
|
| 284 |
+
"gillsans": "gill_sans_infant",
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
+
|
| 288 |
def resolve_tesseract_lang(font_name: Optional[str]) -> str:
|
| 289 |
"""
|
| 290 |
Return best tesseract language/model to use for this font.
|
|
|
|
| 293 |
if not font_name:
|
| 294 |
return "eng"
|
| 295 |
|
| 296 |
+
# Check static map first
|
| 297 |
+
mapped = FONT_MODEL_MAP.get(font_name.lower().strip())
|
| 298 |
+
if mapped:
|
| 299 |
+
tess_dirs = [TESSDATA_DIR, REPO_TESSDATA_DIR]
|
| 300 |
+
if any((d / f"{mapped}.traineddata").exists() for d in tess_dirs):
|
| 301 |
+
return mapped
|
| 302 |
+
|
| 303 |
registry = _load_registry()
|
| 304 |
entry = registry.get(font_name, {})
|
| 305 |
candidates = []
|