標題與內文分類 + 文件大綱
框架中沒有任何功能把行高對應到標題層級或建立章節大綱——ocr/structure 與 element_parse
純屬位置性,``text_blocks`` 把段落 / 清單分組但不對其排序。heading_segment 補上標準啟發法:
行高超過 heading_ratio 乘以中位行高者為標題,且不同的標題高度成為標題*層級*(最高為第 1 級)。
由此輸出扁平的文件大綱。
純標準函式庫,作用於純行字典(text + bbox);可在無影像、無 OCR 引擎下完整單元測試。重用
table_grid_fill 的框邊界讀取器。不匯入 PySide6。
無頭 API
from je_auto_control import classify_lines, outline
for item in classify_lines(ocr_lines, heading_ratio=1.2):
print(item["role"], item["level"], item["text"])
for heading in outline(ocr_lines):
print(" " * (heading["level"] - 1) + heading["text"])
classify_lines 為每行標記 {box, text, role, level}——role 為 "heading" 或
"body",``level`` 為標題層級(1 = 最高,內文為 0)。outline 只回傳依上到下順序的標題,
為 {level, text, top}——即文件目錄。
執行器指令
AC_classify_lines``(``lines / heading_ratio → {count, lines})與 AC_outline
(lines / heading_ratio → {count, headings})。兩者以 MCP 工具 ac_classify_lines /
``ac_outline``(唯讀)及 Script Builder 指令 Classify Headings vs Body / Document Outline
(位於 OCR 分類下)形式提供。