annotate_table_layout — ANNOTATE paper op

• Datenarten: text → table

• Aufruf: import fullseye as fs; fs.ledger.annotate_table_layout(text, xy, anchor='lt', font_size=13, font_path=None, pad=6, col_gap=None, row_gap=0, align='auto', header=False, bold=False, italic=False, line_spacing=1.15) (die Implementierung direkt: import annotate; annotate.annotate_table_layout(text, xy, anchor='lt', font_size=13, font_path=None, pad=6, col_gap=None, row_gap=0, align='auto', header=False, bold=False, italic=False, line_spacing=1.15); aus dem Register: opsannotate.get("annotate_table_layout"))

Verwendung

Gibt eine table (dict) zurück: die Spalten- und Zeilenpositionen, an denen ein tabulatorgetrennter String als Tabelle platziert wird.

Zeilen werden an \n, Spalten an \t getrennt. Die Spaltenbreite ist das Maximum der Breiten, gemessen mit der echten Schrift in der angegebenen Größe, 1 Zelle nach der anderen -- Zählen der Zeichen geht zwischen Japanisch und alphanumerischen Zeichen immer schief, daher ist Messen der einzige korrekte Weg.

Parameters

text : str

Tabulatorgetrennt. Alle Zeilen müssen dieselbe Spaltenzahl haben (sonst ValueError).

xy : (x, y)

Die Position, auf die anchor zeigt (x=col, y=row).

anchor : str

Eine der 9 Varianten 'lt','ct','rt','lm','cm','rm','lb','cb','rb'.

pad : int

Innenabstand der Tabelle [px].

col_gap : int or None

Abstand zwischen Spalten [px]. None (Standard) rundet Zeilenhöhe ×0.6, daher

ändert sich der Abstand mit der Schriftgröße.

row_gap : int

Zusätzlich zwischen Zeilen [px] (0 belässt den normalen Zeilenabstand).

align : str or sequence

Einer der Werte aus TABLE_ALIGNS oder eine Folge pro Spalte. "auto"

(Standard) richtet eine Spalte nur rechtsbündig aus, wenn alle ihre Werte wie Zahlen aussehen.

Bei header=True wird die Kopfzeile von dieser Prüfung ausgenommen.

header : bool

Wenn wahr, wird die 1. Zeile als Kopfzeile fett gesetzt und darunter 1 Linie gezogen.

bold, italic : bool or int

Synthetische Schriftschnitte (_bold_px / _italic_tile). Der Fettdruck von header

ist davon unabhängig und gilt nur für die Kopfzeile.

Returns

dict

{"rect": (x,y,w,h), "ncols", "nrows", "col_w": [...], "col_x": [...], "row_y": [...], "row_h", "col_gap", "align": [...], "header", "rule_y": y der Kopfzeilenlinie (None, wenn header falsch ist), "cells": [{"text","row","col","xy","width","bold"}]}.

col_x / row_y / cells[i]["xy"] sind alle in Bildkoordinaten.

Raises

ValueError

Spaltenzahl je Zeile verschieden / leer / unbekanntes align anchor /

Länge von align weicht von der Spaltenzahl ab.

Examples

>>> import annotate

>>> lay = annotate.annotate_table_layout("Name\tWert\nA\t1.5\nB\t22.25", (10, 10))

>>> lay["ncols"], lay["nrows"], lay["align"]

(2, 3, ['left', 'left'])

>>> lay2 = annotate.annotate_table_layout("Name\tWert\nA\t1.5\nB\t22.25", (10, 10),

... header=True)

>>> lay2["align"] # ohne Kopfzeile enthält Spalte 2 nur Zahlen

['left', 'right']

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie figure_annotation

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• dataset_conventions — Konventionen für Trainingsdatensätze — COCO / YOLO / VOC und Fallstricke in der Sichtprüfung

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• annotate_paper_tour — py -3.11 examples/annotate_paper_tour.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

—

Gleiche Kategorie (paper)

annotate_leader_layout · annotate_leader · annotate_markers · annotate_legend · annotate_dimension_layout · annotate_dimension · annotate_angle_layout · annotate_angle


*Provenance: annotate.py — ANNOTATE Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.