page-ocr-flags
мини-модель для проверки сканов перед OCR
Это компактная модель для image-classification от small-models-for-glam на базе MobileNetV4-conv-small: 2.5M параметров, вход 384×384. Перед OCR она отвечает, есть ли на стороне листа текст и не сломается ли LightOnOCR-3-0.8B. Сделана для библиотек и архивов, которые прогоняют OCR по большим коллекциям сканов.
👉 Ключевые особенности
- 👉 Семь независимых sigmoid-выходов: no_text, lo_blank_write, lo_trunc, lo_loop, table, dense и faint.
- 🍌 Около 50 страниц/с на одном CPU-потоке; на NVIDIA L4 — 3000–4000 страниц/с для самой модели.
- 💸 Помогает пропускать пустые страницы, отправлять рискованные листы в другой OCR и объяснять странный вывод.
- 👀 Обучена в основном на печатных книгах XIX–XX веков из Biodiversity Heritage Library.
- 🐾 Порог no_text: >0.8 — нет текста, <0.2 — OCR обычно, 0.2–0.8 — проверить вручную.
👉 Пример
import timm, torch
from PIL import Image
model = timm.create_model('hf-hub:small-models-for-glam/page-ocr-flags', pretrained=True).eval()
tf = timm.data.create_transform(**timm.data.resolve_data_config({}, model=model))
page = Image.open('page.jpg').convert('L').convert('RGB')
with torch.inference_mode():
probs = torch.sigmoid(model(tf(page).unsqueeze(0)))[0]
print(dict(zip(model.pretrained_cfg['label_names'], probs.round(decimals=3).tolist())))
Подробнее
На 2 165 страницах BHL с эталонными транскрипциями порог no_text 0.5 сохраняет 0.999 текстовых и убирает 0.994 пустых страниц.AUROC no_text на 250 сложных размеченных страницах: 0.970 и 0.935 в двух раундах.
Обучение: 17 653 страницы из ~3 000 книг BHL, 8 эпох, 104 с на одной A100.
Ограничения: в основном печатные книги XIX–XX веков; рукописи, газеты и современные документы не тестировались; faint — экспериментальный, не использовать. Перед применением проверьте на своей выборке.








Комментарии