Структуры данных
Основные структуры данных для представления результатов OCR.
Модель данных
Следующая диаграмма показывает взаимосвязи между структурами данных:
graph LR
%% Entities
Page[Page]
Block[Block]
Line[Line]
Word[Word]
%% Relations
Page -->|"blocks: List[Block]"| Block
Block -->|"lines: List[Line]"| Line
Line -->|"words: List[Word]"| Word
%% Word fields
Word --> Wpoly["polygon: List[(x, y)]<br>≥ 4 points, clockwise"]
Word --> Wdet["detection_confidence: float (0–1)"]
Word --> Wtext["text: Optional[str]"]
Word --> Wrec["recognition_confidence: Optional[float] (0–1)"]
Word --> WordOrder["order: Optional[int]<br>assigned after sorting"]
%% Line fields
Line --> LineOrder["order: Optional[int]<br>assigned after sorting"]
%% Block fields
Block --> BlockOrder["order: Optional[int]<br>assigned after sorting"]
Справочник API
Структуры данных для OCR рукописей.
Этот пакет содержит основные структуры данных, используемые для представления результатов OCR во всей библиотеке manuscript-ocr.
- class manuscript.data.Word(*args, **kwargs)[исходный код]
Базовые классы:
BaseModelОдно обнаруженное или распознанное слово.
- Параметры:
args (Any)
kwargs (Any)
- Тип результата:
Any
- polygon
Вершины полигона (x, y), упорядоченные по часовой стрелке. Для четырёхугольных текстовых областей: TL → TR → BR → BL (верхний левый, верхний правый, нижний правый, нижний левый).
- text
Распознанное текстовое содержимое (заполняется OCR-конвейером). None, если выполнялась только детекция.
- тип:
str, необязательный
- recognition_confidence
Оценка уверенности распознавания текста от распознавателя (от 0.0 до 1.0). None, если выполнялась только детекция.
- тип:
float, необязательный
- order
Позиция слова внутри строки после сортировки. None до сортировки.
- тип:
int, необязательный
Примеры
>>> word = Word( ... polygon=[(10, 20), (100, 20), (100, 40), (10, 40)], ... detection_confidence=0.95, ... text="Hello", ... recognition_confidence=0.98 ... ) >>> print(word.text) Hello
Методы
__call__(*args, **kwargs)Вызов объекта как функции.
detection_confidence
order
polygon
recognition_confidence
text
- class manuscript.data.Line(*args, **kwargs)[исходный код]
Базовые классы:
BaseModelОдна текстовая строка, содержащая одно или несколько слов.
- Параметры:
args (Any)
kwargs (Any)
- Тип результата:
Any
- order
Позиция строки внутри блока или страницы после сортировки. None до сортировки.
- тип:
int, необязательный
Примеры
>>> line = Line(words=[ ... Word(polygon=[(10, 20), (50, 20), (50, 40), (10, 40)], ... detection_confidence=0.95, text="Hello"), ... Word(polygon=[(60, 20), (110, 20), (110, 40), (60, 40)], ... detection_confidence=0.97, text="World"), ... ]) >>> print(len(line.words)) 2
Методы
__call__(*args, **kwargs)Вызов объекта как функции.
order
- class manuscript.data.Block(*args, **kwargs)[исходный код]
Базовые классы:
BaseModelЛогический текстовый блок (например, абзац или колонка).
- words
Устаревшее: прямой список слов без структуры строк. Используется для обратной совместимости. Если и lines, и words пусты, создаётся одна строка из слов.
- тип:
List[Word], необязательный
- order
Позиция блока в порядке чтения после сортировки. None до сортировки.
- тип:
int, необязательный
Примеры
>>> block = Block(lines=[ ... Line(words=[Word(polygon=[(10, 20), (50, 20), (50, 40), (10, 40)], ... detection_confidence=0.95, text="Line 1")]), ... Line(words=[Word(polygon=[(10, 50), (50, 50), (50, 70), (10, 70)], ... detection_confidence=0.97, text="Line 2")]), ... ]) >>> print(len(block.lines)) 2
Методы
__call__(*args, **kwargs)Вызов объекта как функции.
lines
order
words
- __init__(**data)[исходный код]
Инициализация Block с обратной совместимостью для ввода только слов.
- class manuscript.data.Page(*args, **kwargs)[исходный код]
Базовые классы:
BaseModelСтраница документа, содержащая текстовые блоки.
Полную визуальную диаграмму модели данных см. в файле
DATA_MODEL.md, расположенном в том же каталоге модуля.- Параметры:
args (Any)
kwargs (Any)
- Тип результата:
Any
Примеры
>>> page = Page(blocks=[ ... Block(lines=[ ... Line(words=[Word(polygon=[(10, 20), (50, 20), (50, 40), (10, 40)], ... detection_confidence=0.95, text="Hello")]) ... ]) ... ]) >>> print(len(page.blocks)) 1
Методы
__call__(*args, **kwargs)Вызов объекта как функции.
from_json(source)Загрузить Page из JSON-файла или строки.
to_json([path, indent])Экспорт Page в JSON.
- to_json(path=None, indent=2)[исходный код]
Экспорт Page в JSON.
- Параметры:
- Результат:
Строковое представление JSON.
- Тип результата:
Примеры
>>> page.to_json("result.json") # save to file >>> json_str = page.to_json() # get as string
- classmethod from_json(source)[исходный код]
Загрузить Page из JSON-файла или строки.
- Параметры:
source (str or Path) – Путь к JSON-файлу или JSON-строка.
- Результат:
Загруженный объект Page.
- Тип результата:
Примеры
>>> page = Page.from_json("result.json") >>> page = Page.from_json('{"blocks": [...]}')