Grapheme Line Reconstructor
группировка глифов в строки по геометрии
Это исследовательская модель, которая собирает уже найденные bbox видимых глифов в текстовые строки. На вход подаются размер страницы и по одному ink-box с ID на каждый глиф, на выходе — непересекающиеся группы ID для каждой страницы. Модель не распознаёт символы по изображению и не восстанавливает абзацы, стили или порядок чтения.
▶ Ключевые особенности
- ➖ Координаты задаются как
[x, y, width, height]в пунктах, 72 points per inch; начало — верхний левый угол страницы. - ➖ Не OCR: строки — это наборы ID наблюдаемых глифов, а не текстовые строки или OCR-боксы.
- ➖ Архитектура: 144 обучаемых слота Line на страницу, размерность 32, 4 attention heads, один graph message layer и три query-refinement слоя.
- ➖ Всего 121 524 параметра; обучение шло на 50 синтетических документах, 76 страницах, с английским и корейским синтетическим текстом.
- ➖ Есть CLI и Python API; inference работает на CPU в один поток, без
trust_remote_codeи Transformers auto-loader.
1⃣ Пример
import json
import torch
from text_instance_model import LineReconstructor
torch.set_num_threads(1)
model = LineReconstructor.from_pretrained(".")
document = json.load(open("examples/input.json", encoding="utf-8"))
print(model.predict(document)["pages"][0]["lines"])
Подробнее
Membership F1: 97,31% на внешних одноколоночных страницах (562 стр.) и 86,44% на многоколоночных (60 стр.); Exact Lines — 13 872/17 997 и 1 738/3 509.До 144 нейрослотов на страницу; около 2,13 и 2,70 с/страница на CPU в один поток.
Ограничения: реальная многоколоночная вёрстка заметно хуже, OCR-шум, таблицы, рукопись, вертикальный и RTL-текст не подтверждены; мультиязычность не доказана.
Код и веса — apache-2.0.








Комментарии