Documentation
¶
Overview ¶
Package textdoc 把 OFD 页面中的文字对象提取为带位置的条目,供文本、Markdown 等编码器复用。它只依赖 OFD 模型与解析器,不感知任何输出格式。
Index ¶
- func Count(documents []*parser.Document) int
- func DisplayWidth(text string) int
- func EnsureUTF8(value string) string
- func Finite(value float64) bool
- func JoinText(row []Entry) string
- func RowLeft(row []Entry) float64
- func RowRight(row []Entry) float64
- func RowSize(row []Entry) float64
- func RowTolerance(a, b, unit float64) float64
- func RowTop(row []Entry) float64
- func Rows(entries []Entry) [][]Entry
- type Entry
- type Page
- type Table
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DisplayWidth ¶
DisplayWidth 返回按终端显示列数计算的宽度:CJK 等全角字符占两列,其余字符 占一列,保证多栏文字的列位置对齐。
func EnsureUTF8 ¶
EnsureUTF8 保证输出文本是合法 UTF-8。OFD 规范要求文字为 UTF-8,但部分第三方 文档会写入 GBK 等本地编码的原始字节;这里先尝试按 GBK 解码,失败时再把无法 识别的字节替换为 U+FFFD,避免 .txt/.md 出现非法 UTF-8 导致乱码。
Types ¶
type Page ¶
Page 保存单页的文字条目以及该页物理尺寸,用于按列对齐和页眉页脚判定。
type Table ¶
Table 描述一个已识别的表格。Start/End 是页内行索引(含),Header 为表头 单元格文本,Rows 为数据行。
func DetectTables ¶
DetectTables 在已按行分组的文字条目中识别表格。算法:
- 行内按水平间距切分单元格,含两个及以上单元格的行为候选网格行;
- 用候选网格行的单元格区间求并,间隔(白槽)处切分得到列;
- 每个候选行的单元格必须各自落在唯一列内且覆盖至少两列,才认定为表格行;
- 只有一个单元格且落在唯一列内的行作为续行,合并到最近的表格行;
- 被非表格行(标题、页脚等)隔开的多行网格行组成一个表格。
Click to show internal directories.
Click to hide internal directories.