市面上公式识别工具有很多,商业的和开源的随便都能数出一大堆来。
商业软件要花钱,对于公式识别这种低频需求来说,花钱实在是有点儿不太爽。而开源的公式识别工具,基本都是基于单独公式识别,目前尚未发现能够实现文本和公式混合识别的。思考原因,感觉应该是这些基于本地的模型参数量太小,区分文本和公式难度比较大,有些模型(如MixTex)会将输入的所有图像都识别成文本,有些则完全无法识别文本和公式混合的情况。
利用视觉大模型其实很容易解决此类问题,而且识别准确率极高。如使用Qwen2.5-VL系列模型能够非常准确地实现图文混合情况。
比如用下面的提示词。
- Role: 图像识别与文本公式转换专家
- Background: 用户需要从图片中提取文本和公式,并将公式转换为LaTeX格式以便于编辑和排版。这可能是为了学术写作、技术文档整理或其他需要精确数学表达的场景。
- Profile: 你是一位精通图像识别技术和LaTeX排版的专家,能够准确地从图像中提取文本和公式,并将其转换为LaTeX格式,确保公式在文档中的精确呈现。
- Skills: 你具备高级的图像处理能力、文本识别技术以及LaTeX语法的全面掌握,能够处理复杂的数学公式和符号,确保转换的准确性和格式的规范性。
- Goals: 从图片中准确识别文本和公式,并将公式转换为LaTeX格式,确保行内公式使用单`$`分隔,行间公式使用双`$$`符号分隔。
- Constrains: 识别的文本和公式必须准确无误,LaTeX格式必须符合标准规范,确保在任何支持LaTeX的编辑器中都能正确显示。
- OutputFormat: 提取的文本和公式将以文本形式输出,公式部分按照LaTeX格式规范进行标记。行内公式使用单`$`分隔,行间公式使用双`$$`符号分隔。仅输出提出的文本和公式,不要输出无关的文字。识别输出的行间公式中的`\begin{equation}`及`\end{equation}`用`$$`替代。
- Workflow:
1. 从图片中提取文本和公式,确保识别的准确性。
2. 将提取的公式转换为LaTeX格式,行内公式使用单`$`分隔,行间公式使用双`$$`符号分隔。
3. 输出提取的文本和LaTeX格式的公式,确保格式规范和内容准确。
- Examples:
- 例子1:图片中的文本为“函数\(f(x)\)的定义域为\(x > 0\)。”
输出:函数$f(x)$的定义域为$x > 0$。
- 例子2:图片中的公式为“\(\int{a}^{b} x^2 dx\)”
输出:$\int{a}^{b} x^2 dx$
- 例子3:图片中的文本为“定理:如果\(a = b\),则\(a + c = b + c\)。”
输出:定理:如果$a = b$,则$a + c = b + c$。
- Initialization: 在第一次对话中,请直接输出以下:您好!我是图像识别与文本公式转换专家。请上传您需要处理的图片,我将为您准确提取文本和公式,并将其转换为LaTeX格式。请确保图片清晰,以便获得最佳识别效果。
随便找一段带有公式的文本,如下图所示。
识别得到的Markdown文本为:
Limiting can be applied to the cell gradient in the explicit contribution of the linear upwind advection scheme, described in Sec. 3.14. The scheme with gradient limiting is analysed below for its TVD behaviour on a regular mesh in 1D.
In the following figure, the cell gradient is denoted by "$\nabla$" and the face gradient is denoted by "$\nabla_{\mathrm{f}}$". The ratio of gradients is $r = \max \left[2(\nabla / \nabla_{\mathrm{f}}) - 1, 0\right]$ from Eq. (3.12), which is adjusted by modifying $\Psi_{\mathrm{p}}$. No limiting is applied for $1/3 \leq r \leq 3$, when $\Psi_{\mathrm{f}}$ can be expressed by $\Psi_{\mathrm{f}} = \Psi_{\mathrm{p}} + \beta \left( \Psi_{\mathrm{L}} - \Psi_{\mathrm{p}} \right)$, with $\beta = \nabla / \nabla_{\mathrm{f}}$. In that case, $r = 2\beta - 1$, corresponding to a function $\beta = (r + 1)/2$.
不过每次这么使用也挺麻烦的,想着自己撸一个调用大模型识别文本公式的软件,不过最近在github上发现了个现成的利用大模型识别文本公式混排的工具:pillOCR
,用起来还挺不错的。
”
下载安装后直接运行,软件会自动最小化到托盘窗口中,如下图所示,绿色表示程序已经就绪。
启动后可以设置大模型参数,如下图所示。
然后只要对着想要识别的文本和公式进行抓图即可。软件会自动监测剪贴板中的图像进行识别,如下面的图像:
识别后的结果如下所示。可以看到,识别效果是相当的不错。
Limiting can be applied to the cell gradient in the explicit contribution of the linear upwind advection scheme, described in Sec. 3.14. The scheme with gradient limiting is analyzed below for its TVD behavior on a regular mesh in 1D.
In the following figure, the cell gradient is denoted by $\nabla$ and the face gradient is denoted by $\nabla_{\mathrm{f}}$. The ratio of gradients is $r = \max\left[2\left(\nabla / \nabla_{\mathrm{f}}\right) - 1, 0\right]$ from Eq. (3.12), which is adjusted by modifying $\Psi_{\mathrm{p}}$. No limiting is applied for $1/3 \leq r \leq 3$, when $\Psi_{\mathrm{f}}$ can be expressed by
$$\Psi_{\mathrm{f}} = \Psi_{\mathrm{P}} + \beta\left(\Psi_{\mathrm{L}} - \Psi_{\mathrm{P}}\right),$$with$ \beta = \nabla / \nabla_{\mathrm{f}} $. In that case, $r = 2\beta - 1$, corresponding to a function $\beta = \left(r + 1\right)/2$.
(完)
来源:CFD之道