从 Postscript 格式文献中提取 数学公式的方法
概述 从 Postscript 格式文献中提取识别数学公式, 是数学公式识别领域的一个研究方向。主要针对 以 Word 和 Latex 为生成源的 Postscript 文档, 提出 基于内容的数学公式提取方法。首先重载 Postscript 语言中的一些相关命令, 先后提取出 文档中的字符及由线段连接得到的图形。然后根 据字符名称、字体信息、位置信息对字符进行判 断分析, 提取出其中的数学符号 ; 对提取出的图 形, 进行编码以识别出其对应的数学符号。最后, 根据得到的数学符号之间的空间位置关系, 借助 启发式规则, 将数学符号合并, 提取出完整的数 学公式。
PS 语言 PS ( Postscript ) 是 Adobe 公司在 1985 年发明的一种解释性页面描述语言, 它拥有强大的图形功能以支持文字、图形 与图像的显示和打印, 并可在图文编辑环 境和打印设备之间传递信息, 具有设备无 关性的优点。 PDF ( Portable document format ) 是一种基于 PS 语言的电子文档格式。
PS 和 PDF 文档的生成和转化 (1) 编写 PS 语言代码。 (2) 由 PS/PDF 虚拟打印机生成。 (3) 由应用程序转化而成。 (e.g:Acrobat Distiller ; Divps) (4)PS 和 PDF 文档可以通过 ps2pdf/pdf2ps 等 程序进行相互转化。
PS 语言特点 (1) 基于栈的存储和执行,所有命令和操作数 都存储在栈中。 (2) 操作数在前,操作命令在后。 (3) 支持多种数据类型。 (4) 可自由定义操作命令以扩展功能。 (5) 程序代码完全由 ASCII 字符编写,可在任 意文本编辑工具中编辑。 (6) 支持头文件 (prolog) 和脚本 (script) 的文件
的文件组织结构。头文件中主要包含脚本 中命令和过程的定义。 PS 语言由解释器进行解释执行,控制打 印机或显示设备进行输出。
PS 中文本的显示机制 (1) 字符串 (e.g:(This is a cat)(\098)) (2) 字体 (3) 显示位置 (4) 显示命令 (show,ashow,widthshow,awidthshow,ksh ow,xshow,yshow,xyshow 等 )
PS 显示文本的过程
数学符号提取 从 PS 文档中正确提取出数学公式的前 提是提取并识别出文档中的数学符号。 由于数学符号同其他字符混杂在一起, 这 需要首先提取出文档中的字符然后经过判 别, 筛选出其中的数学符号。
此外, 一些数学符号不是由字符而是由图 形所表示的。 例如在以 Word 文档为生成源的 PS 文档中, 根号表示为 4 条顺次连接的线段。 在由 Latex 文档转换得到的 文档中, 根号表 示为由 4 条线段封闭连接形成的狭长矩形 。因此, 除了提取字符, 还需要提取出这些 表示特殊数学符号的图形。
字符提取 从 PS 文档中提取字符可以视为一个解 码过程。字符提取的目标是提取出 PS 文档 中的所有字符的相关信息。这些信息用来 判断字符是否为数学符号, 包括字符名称 、字体信息 字体类型和字体名称 以及位 置信息。
具体步骤: (1) 重载 show ashow w idthshow awidthshow kshow xshow yshow xyshow 等显示命令, 提取 出字符串; (2) 加载当前字体词典, 访问其字体类型和字体名称 ; (3) 根据每个字符的字符编码, 在字体词典的编码 表中索引对应的字符名称 ; (4) 对每一个字符, 根据显示命令的位置参量, 设置 正确的当前位置, 并用 charpath 命令得到其应字 形的图形构造路径, 之后用 pathbbox 命令得到字 形的最小外接矩形 ; (5) 对外接矩形坐标进行坐标变换, 由 PS 用户坐标 变换至最终显示的页面坐标, 从而得到字符的 位置信息。
图形提取 绝大多数表示数学符号的图形都是由 线段连接组成的封闭或开放的图形。方法 是先提取出所有线段,然后找出相连接的 线段以组成图形。
数学符号识别 在提取出 文档中的字符之后, 接下来是 判断其是否为数学符号。判断的依据是字 符的息, 包括字符名称、字体信息以及位 置信息。 字符名称能够反映一个字符的本质含义, 是判别数学符号的基本依据。 字体信息 ( 包括字体类型和字体名称 ) 也 是判断数学符号的重要依据。 数学公式和普通文本的区别很大程度上 在于数学符号的二维空间排列性质,因此 子图位置信息也很重要。
对于提取出的图形,先对其进行编码,然后 根据编码识别其对应的数学符号。首先给出 一个绘制方向的定义:对开放的图形,即折 线段,规定起点为折线段两端点中 x 坐标较小 者 (x 坐标相等时,取 y 坐标较大者 ) ,另一端点 则为重点,沿各点段由起点到终点的行进方 向为绘制方向;对封闭的图形,起点选择为 各端点中 x 坐标最小者,规定绘制方向为由起 点以顺时针沿各线段行进,最后回到起点的 方向。 规定了绘制方向后,以下图所示的八方 向编码依次对图形中各线段进行标记,这样 可以得到整个图形的编码。
构造图形编码与数学符号的映射表,根据图形编码可以识 别出它对应的数学符号。
数学公式提取 经过前面的处理, 已经提取出了各种数学符 号。下一步是将这些孤立的数学符号合并 为完整的数学公式。这一过程还可以解决 数学符号提取中存在的两个问题 : (1) 一些符号的含义并不能确定。例如, 由一 条水平直线段构成的字符可能是减号, 也 可能是分号, 还有可能是上划线。 (2) PS 中有些数学符号用标点符号所代替。 例如, 减号有时被英文破折号替代, 这种情 况造成有个别数学符号被遗漏。
给出一个简单的文法 G={N,∑,P,S}, 并根据这 个文法合并所有识别出的数学符号。其中, 非终结符 N={S} ,并根据这个文法合并所 有识别出的数学符号。其中,非终结符 N={S} ,终结符 ∑ 为数学符号结合, S 为起 始符,也是唯一的非终结符,表示数学公 式,产生式 P 定义为以下的启发式规则: 规则 1 数学重音符号 数学符号与其上面的数 学重音符号合并。 规则 2 上下标 数学符号与其上下标位置的 数学符号合并。
规则 3 单元运算符 单元运算符与其相邻的数 学符号合并。 规则 4 二元运算符 “+” 等二元运算符与其前 后子公式合并。 规则 5 关系运算符 “=” 等关系运算符与其前 后子公式合并。 规则 6 分式 当 “/” 前后为子公式时,将 “/” 作为 斜分号,并将其作为前后子公式合并为分 式。当 “-” 上下为子公式时,将 “-” 作为水平 分毫,将其与上下子公式合并为分式。
规则 7 根式 根号范围内的子公式与根号合并 为根式。 规则 8 积分与求和 积分符号与其上下限及积 分项合并;求和符号与其上下限及求和项 合并。 规则 9 函数 数学函数名与其作用域子公 式合并。 规则 10 定界符 由 “(”“)” 等定界符包围的子公 式与定界符合并。 规则 11 矩阵 矩阵等在空间阵列排列的子公 式按空间位置关系进行合并。 规则 12 公式扩展 水平相邻的子公式相合并。 e.g:100,xyz 。