Linux系统最强公式识别工具使用指南——Pix2Text

Ubuntu安装和配置Pix2Text(公式识别)

1. 初识Pix2Text

  Pix2Text是一款使用Python语言开发的免费开源的公式识别工具。Pix2Text内置了文字识别模块和公式识别模块,所以其即可以作为常规的公式识别工具使用,又可以作为文本识别工具使用。

  Pix2Text的官方代码库:

2. 本教程解决的主要问题

  在Linux系统上搭建一个使用快捷键+鼠标就能轻松公式识别文本识别需求的环境。

3. 安装Pix2Text和pyperclip

  在Linux系统上安装Pix2Text非常简单,首先打开终端激活Conda中的python虚拟环境(没有使用Conda的忽略此步骤)。

conda activate 环境名字

  接着安装pix2text包。这里使用豆瓣的镜像站,也可以使用国内其他开源镜像站(在测试中清华的镜像站速度较慢)。

pip install pix2text -i https://pypi.doubanio.com/simple

  按照上面的方法基本上pix2text都能安装成功。但是,也有例外情况,那就是你的系统中还没有安装gcc编译器。这会导致pix2text包安装失败。解决这个问题也很简单,那就是马上安装gcc编译器,安装代码如下。

sudo apt install gcc

  最后,再重新运行一遍pix2text包的安装代码就能顺利安装上pix2text包了。

pip install pix2text -i https://pypi.doubanio.com/simple

  安装pyperclip包,在Conda的虚拟环境中直接安装即可(没有使用Conda的也适用)。

pip install pyperclip - https://pypi.doubanio.com/simple

4. 模型下载

  首次调用pix2text时,它会自动下载模型文件。但是模型文件存储在Github上,这导致我们下载时的速度十分感人(在0~8k之间”摇摆“)。那这个问题怎么解决呢?办法当然有,那就是使用pix2text的开发者提供的百度云盘链接下载这些模型文件。https://pan.baidu.com/s/1kubZF4JGE19d98NDoPHJzQ?pwd=p2t0#list/path=%2F,提取码:p2t0。

  这些模型文件共3个,分别是mobilenet_v2.zipweights.pthimage_resizer.pth。根据官方的指导:

  • mobilenet_v2.zipmobilenet_v2.zip文件解压后所得的文件夹放在~/.pix2text目录中;

  • weights.pth文件和image_resizer.pth文件:放~/.pix2text/formula目录中。

5. 基于 Screenshot, Shell, pyperclip 和 notify-send 实现:截图->公式识别->识别结果写入剪贴板->任务完成桌面弹窗提醒

  1. 将下面的代码保存为main.py文件

    # coding: utf-8
    
     import os
     import pyperclip as pc
     from pix2text import Pix2Text
    
     #识别图片所在路径及图片文件名
     img_fp = '/home/haijian/Python项目/Pix2Text/formula.png'
     #初始化Pix2Text
     p2t = Pix2Text(analyzer_config=dict(model_name='mfd'))
     #识别图片
     outs = p2t.recognize(img_fp)
     # 如果只需要识别出的文字和Latex表示,可以使用下面行的代码合并所有结果
     only_text = '\n'.join([out['text'] for out in outs])
     #将识别结果复制到系统剪贴板
     pc.copy(only_text)
     #以Linux系统通知的形式告知公式识别完成
     os.system('notify-send "Pix2Text" "完成公式识别,已将公式写入剪贴板。" -i /home/haijian/Python项目/Pix2Text/clipboard.svg -t 1000 ')
    
    
  2. 将下面的代码保存为run.sh文件

    # 区域截图
     gnome-screenshot -abpf /home/haijian/Python项目/Pix2Text/formula.png # 截图图片保存的目录
     source $HOME/miniconda3/etc/profile.d/conda.sh # Conda的conda.sh文件的地址
     # 激活conda里的Python环境
     conda activate dailyuse
     # 切换工作路径到Python项目路径
     cd /home/haijian/Python项目/Pix2Text
     # 运行Python脚本
     python main.py
    
  3. 下载icon图标,网址:https://feathericons.com/。选择名为clipboard的icon进行下载。

  4. main.pyrun.shclipboard.svg文件放在同一个目录下,并根据该目录的绝对路径修改两个文件中相应的绝对路径。

  5. 系统设置中找到键盘快捷键,点击下图所示的+号,在命令栏输入bash /home/haijian/Python项目/Pix2Text/run.sh,名称可以根据自己喜欢自取,快捷键也可以根据自己的习惯自行设置。
    在这里插入图片描述在这里插入图片描述
    现在你可以按下你的快捷键来使用Pix2Text进行公式识别或文本识别了。

6. 最终效果

  1. 纯公式场景识别
    (1) 原始图片:
    在这里插入图片描述
    (2) 识别结果:

    \bar{n}(\varepsilon)=\frac{1}{\Omega_{R}}\sum_{n=0}^{\infty}n x^{n}=(1-x)\,x\frac{d}{d x}(1-x)^{-1}=\frac{x}{1-x}
    

    (3) 结果编译:
    n ˉ ( ε ) = 1 Ω R ∑ n = 0 ∞ n x n = ( 1 − x )   x d d x ( 1 − x ) − 1 = x 1 − x \bar{n}(\varepsilon)=\frac{1}{\Omega_{R}}\sum_{n=0}^{\infty}n x^{n}=(1-x)\,x\frac{d}{d x}(1-x)^{-1}=\frac{x}{1-x} nˉ(ε)=ΩR1n=0nxn=(1x)xdxd(1x)1=1xx

  2. 纯文本场景识别
    原始图片:
    在这里插入图片描述
    识别结果:

    82.3 
    完全电离混合气体
    在恒星内部绝大部分地方,温度非常高而压强非常大,造成物质发生电离。这
    会使得轻的元素失去全部电子,而重的元素失去大部分电子。电离出来的电子造成
    当地的自由粒子数日大大增加,将对恒星物质的热力学性质产生显著影响
    

    编译结果:
    82.3
    完全电离混合气体
    在恒星内部绝大部分地方,温度非常高而压强非常大,造成物质发生电离。这
    会使得轻的元素失去全部电子,而重的元素失去大部分电子。电离出来的电子造成
    当地的自由粒子数日大大增加,将对恒星物质的热力学性质产生显著影响

  3. 公式和文本混合场景识别
    原始图片:
    在这里插入图片描述
    识别结果:

    其中c是真空中的光速,将方程(2.40)用原来的自变量写出,就给出了光子气体的
    普朗克(Planck)分布函数
    $$
    \bar{n}=\frac{1}{e^{\varepsilon/k T}-1}=\frac{1}{e^{h\nu/k T}-1}
    $$
    (2.42)
    

    结果编译:
    其中c是真空中的光速,将方程(2.40)用原来的自变量写出,就给出了光子气体的
    普朗克(Planck)分布函数
    n ˉ = 1 e ε / k T − 1 = 1 e h ν / k T − 1 \bar{n}=\frac{1}{e^{\varepsilon/k T}-1}=\frac{1}{e^{h\nu/k T}-1} nˉ=eε/kT11=ehν/kT11
    (2.42)

完结!

猜你喜欢

转载自blog.csdn.net/Hello_Haiwan/article/details/129415142