feat: add OCR result and transport types
This commit is contained in:
@@ -201,6 +201,68 @@ class GlobalLimits:
|
||||
raise ValueError("全局限额不能为负(0 表示不启用)")
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class OcrLayoutElement:
|
||||
"""版面单元(M3 设计 §3.1): 来自 `_middle.json` para_blocks 的带类型块。
|
||||
|
||||
type 为开放字符串(实测 table/image/text,不枚举锁死——零业务假设);
|
||||
bbox 为 OCR 原生页面坐标 (x1, y1, x2, y2),几何映射留业务侧(D9)。
|
||||
"""
|
||||
|
||||
type: str
|
||||
bbox: tuple[float, float, float, float]
|
||||
page_index: int
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class OcrTextResult:
|
||||
"""一次治理 OCR 文本转录的统一响应(/ocr/text;M3 设计 §3.1)。
|
||||
|
||||
text 空串 = 合法"无文字";行过滤/去重/拼帧留业务侧(VT 迁移 §3)。
|
||||
"""
|
||||
|
||||
text: str
|
||||
source_name: str
|
||||
usage: Usage # OCR 无计费: Usage(0, 0);耗时由 latency_ms 承载
|
||||
latency_ms: int
|
||||
call_id: str
|
||||
raw: dict[str, Any]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class OcrLayoutResult:
|
||||
"""一次治理版面解析的统一响应(/parse → ZIP;M3 设计 §3.1)。
|
||||
|
||||
elements 空 = 合法"无元素";CHS 首表 = 首个 type=="table" 元素。
|
||||
page_sizes 按 page_index 索引。
|
||||
"""
|
||||
|
||||
elements: list[OcrLayoutElement]
|
||||
page_sizes: list[tuple[float, float]]
|
||||
source_name: str
|
||||
usage: Usage
|
||||
latency_ms: int
|
||||
call_id: str
|
||||
raw: dict[str, Any]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class OcrTextTransportResult:
|
||||
"""transport 单次 /ocr/text 调用产物;治理字段由 OcrClient 补齐。"""
|
||||
|
||||
text: str
|
||||
raw: dict[str, Any]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class OcrLayoutTransportResult:
|
||||
"""transport 单次 /parse 两段调用产物;治理字段由 OcrClient 补齐。"""
|
||||
|
||||
elements: list[OcrLayoutElement]
|
||||
page_sizes: list[tuple[float, float]]
|
||||
raw: dict[str, Any]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class EmbeddingTransportResult:
|
||||
"""一次原始 embedding 调用的解析结果(M2 设计 §7.2;transport → client)。"""
|
||||
|
||||
Reference in New Issue
Block a user