PDF公式转Latex

文章目录

  • 摘要
  • 数据集 UniMER
    • 介绍
      • 下载链接
  • LaTeX-OCR
  • UniMERNet
    • 安装
    • UniMER 用的数据集
      • 介绍
      • 下载链接
  • PDF-Extract-Kit
    • 整体介绍
    • 效果展示
    • 评测指标
      • 布局检测
      • 公式检测
      • 公式识别
    • 使用教程
      • 环境安装
      • 参考[模型下载](models/README.md)下载所需模型权重
    • 在Windows上运行
    • 在macOS上运行
    • 运行提取脚本

摘要

记录一下,找到两个PDF公式转Latex的开源项目和一个数据集

数据集 UniMER

介绍

UniMER数据集是一个专为推动数学表达式识别(MER)领域进步而精心策划的专业集合。它包括全面的UniMER-1M训练集,该训练集包含超过一百万个实例,代表了一系列多样且复杂的数学表达式,以及精心设计的UniMER测试集,用于在现实世界场景下对MER模型进行基准测试。数据集的详细信息如下:

UniMER-1M训练集

  • 总样本数:1,061,791个LaTeX-图像对
  • 组成:简洁与复杂、扩展公式表达式的均衡混合
  • 目标:训练出稳健、高精度的MER模型,提高识别精度和泛化能力

UniMER测试集

  • 总样本数:23,757个,分为四种类型的表达式:
    • 简单打印表达式(SPE):6,762个样本
    • 复杂打印表达式(CPE):5,921个样本
    • 屏幕截图表达式(SCE):4,742个样本
    • 手写表达式(HWE):6,332个样本
  • 目的:在各种现实世界条件下对MER模型进行全面评估

下载链接

您可以从OpenDataLab(推荐中国用户使用)或HuggingFace下载该数据集。

找到一个非常不错的公式转化开源项目。将论文中的公式转为Latex。

LaTeX-OCR

github链接:

https://github.com/lukas-blecher/LaTeX-OCR

包含训练测试等,

安装简单非常,

安装 pix2tex:

pip install "pix2tex[gui]"

然后,下载权重到安装位置。
在这里插入图片描述
权重链接:

https://github.com/lukas-blecher/LaTeX-OCR/releases

在这里插入图片描述
注意:Weight release,别选错了。
然后,运行命令:

latexocr

就可以运行了。

demo

UniMERNet

github链接:

https://github.com/opendatalab/UniMERNet。

没有训练,只有测试。

安装

建议创建虚拟环境,我在base环境上安装没有成功,安装了python3.10的虚拟环境后才没有问题。

conda create -n unimernet python=3.10conda activate unimernetpip install --upgrade unimernet

下载项目和模型命令如下:

git clone https://github.com/opendatalab/UniMERNet.git
cd UniMERNet/models
# Download the model and tokenizer individually or use git-lfs
git lfs install
git clone https://huggingface.co/wanderkid/unimernet

如果没有git,也可以手动去huggingface上下载模型,将模型下载到本地的models下,路径要正确!
在这里插入图片描述

运行demo.py,

python demo.py

运行UI界面,执行命令
bash unimernet_gui

UniMERNet

UniMER 用的数据集

介绍

UniMER数据集是一个专为推动数学表达式识别(MER)领域进步而精心策划的专业集合。它包括全面的UniMER-1M训练集,该训练集包含超过一百万个实例,代表了一系列多样且复杂的数学表达式,以及精心设计的UniMER测试集,用于在现实世界场景下对MER模型进行基准测试。数据集的详细信息如下:

UniMER-1M训练集

  • 总样本数:1,061,791个LaTeX-图像对
  • 组成:简洁与复杂、扩展公式表达式的均衡混合
  • 目标:训练出稳健、高精度的MER模型,提高识别精度和泛化能力

UniMER测试集

  • 总样本数:23,757个,分为四种类型的表达式:
    • 简单打印表达式(SPE):6,762个样本
    • 复杂打印表达式(CPE):5,921个样本
    • 屏幕截图表达式(SCE):4,742个样本
    • 手写表达式(HWE):6,332个样本
  • 目的:在各种现实世界条件下对MER模型进行全面评估

下载链接

您可以从OpenDataLab(推荐中国用户使用)或HuggingFace下载该数据集。

PDF-Extract-Kit

这个还没有调通。
github链接:

https://github.com/opendatalab/PDF-Extract-Kit

一个完整的工作流,支持PDF的分析,将PDF的论文内容识别出来。

整体介绍

PDF文档中包含大量知识信息,然而提取高质量的PDF内容并非易事。为此,我们将PDF内容提取工作进行拆解:

  • 布局检测:使用LayoutLMv3模型进行区域检测,如图像表格,标题,文本等;
  • 公式检测:使用YOLOv8进行公式检测,包含行内公式行间公式
  • 公式识别:使用UniMERNet进行公式识别;
  • 光学字符识别:使用PaddleOCR进行文本识别;

注意: 由于文档类型的多样性,现有开源的布局检测和公式检测很难处理多样性的PDF文档,为此我们内容采集多样性数据进行标注和训练,使得在各类文档上取得精准的检测效果,细节参考布局检测和公式检测部分。对于公式识别,UniMERNet方法可以媲美商业软件,在各种类型公式识别上均匀很高的质量。对于OCR,我们采用PaddleOCR,对中英文OCR效果不错。

PDF内容提取框架如下图所示

请添加图片描述

PDF-Extract-Kit输出格式
{"layout_dets": [    # 页中的元素{"category_id": 0, # 类别编号, 0~9,13~15"poly": [136.0, # 坐标为图片坐标,需要转换回pdf坐标, 顺序是 左上-右上-右下-左下的x,y坐标781.0,340.0,781.0,340.0,806.0,136.0,806.0],"score": 0.69,   # 置信度"latex": ''      # 公式识别的结果,只有13,14有内容,其他为空,另外15是ocr的结果,这个key会换成text},...],"page_info": {         # 页信息:提取bbox时的分辨率大小,如果有缩放可以基于该信息进行对齐"page_no": 0,      # 页数"height": 1684,    # 页高"width": 1200      # 页宽}
}

其中category_id包含的类型如下:

{0: 'title',              # 标题1: 'plain text',         # 文本2: 'abandon',            # 包括页眉页脚页码和页面注释3: 'figure',             # 图片4: 'figure_caption',     # 图片描述5: 'table',              # 表格6: 'table_caption',      # 表格描述7: 'table_footnote',     # 表格注释8: 'isolate_formula',    # 行间公式(这个是layout的行间公式,优先级低于14)9: 'formula_caption',    # 行间公式的标号13: 'inline_formula',    # 行内公式14: 'isolated_formula',  # 行间公式15: 'ocr_text'}              # ocr识别结果

效果展示

结合多样性PDF文档标注,我们训练了鲁棒的布局检测公式检测模型。在论文、教材、研报、财报等多样性的PDF文档上,我们的pipeline都能得到准确的提取结果,对于扫描模糊、水印等情况也有较高鲁棒性。

在这里插入图片描述

评测指标

现有开源模型多基于Arxiv论文类型数据进行训练,面对多样性的PDF文档,提前质量远不能达到实用需求。相比之下,我们的模型经过多样化数据训练,可以适应各种类型文档提取。

布局检测

我们与现有的开源Layout检测模型做了对比,包括DocXchain、Surya、360LayoutAnalysis的两个模型。而LayoutLMv3-SFT指的是我们在LayoutLMv3-base-chinese预训练权重的基础上进一步做了SFT训练后的模型。论文验证集由402张论文页面构成,教材验证集由587张不同来源的教材页面构成。

模型论文验证集教材验证集
mAPAP50AR50mAPAP50AR50
DocXchain52.869.577.334.950.163.5
Surya24.239.466.113.923.349.9
360LayoutAnalysis-Paper37.753.659.820.731.343.6
360LayoutAnalysis-Report35.146.955.925.433.745.1
LayoutLMv3-SFT77.693.395.567.982.787.9

公式检测

我们与开源的模型Pix2Text-MFD做了对比。另外,YOLOv8-Trained是我们在YOLOv8l模型的基础上训练后的权重。论文验证集由255张论文页面构成,多源验证集由789张不同来源的页面构成,包括教材、书籍等。

模型论文验证集多源验证集
AP50AR50AP50AR50
Pix2Text-MFD60.164.658.962.8
YOLOv8-Trained87.789.982.487.3

公式识别

公式识别我们使用的是Unimernet的权重,没有进一步的SFT训练,其精度验证结果可以在其GitHub页面获取。

使用教程

环境安装

conda create -n pipeline python=3.10pip install -r requirements.txtpip install --extra-index-url https://miropsota.github.io/torch_packages_builder detectron2==0.6+pt2.3.1cu121

安装完环境后,可能会遇到一些版本冲突导致版本变更,如果遇到了版本相关的报错,可以尝试下面的命令重新安装指定版本的库。

pip install pillow==8.4.0

除了版本冲突外,可能还会遇到torch无法调用的错误,可以先把下面的库卸载,然后重新安装cuda12和cudnn。

pip uninstall nvidia-cusparse-cu12

参考模型下载下载所需模型权重

在Windows上运行

如需要在Windows上运行本项目,请参考在Windows环境下使用PDF-Extract-Kit。

在macOS上运行

如需要在macOS上运行本项目,请参考在macOS系统使用PDF-Extract-Kit。

运行提取脚本

python pdf_extract.py --pdf data/pdfs/ocr_1.pdf

相关参数解释:

  • --pdf 待处理的pdf文件,如果传入一个文件夹,则会处理文件夹下的所有pdf文件。
  • --output 处理结果保存的路径,默认是"output"
  • --vis 是否对结果可视化,是则会把检测的结果可视化出来,主要是检测框和类别
  • --render 是否把识别得的结果渲染出来,包括公式的latex代码,以及普通文本,都会渲染出来放在检测框中。注意:此过程非常耗时,另外也需要提前安装xelateximagemagic

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL:库操作

1. 创建数据库 create database [if not exists] name [create_specification], [create_specification]... []内为可选的选项 create_specification: character set charset_name -- 指定数据库采用的字符集 -- 数据库未来存储数据 collate collation_name -- 指定数据库字符…

Hi3861 OpenHarmony嵌入式应用入门--华为 IoTDA 设备接入

华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,可以将自己的 IoT 设备 联接到华为云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云物联网平台的服 务实现设备与设备之间的控…

vue3.0 项目h5,pc端实现扫描二维码 qrcode-reader-vue3

qrcode-reader-vue3 插件简述 qrcode-reader-vue3插件,允许您在不离开浏览器的情况下检测和解码二维码。 🎥 访问设备摄像头并持续扫描传入帧。QrcodeStream🚮 渲染到一个空白区域,您可以在其中拖放要解码的图像。QrcodeDropZon…

【vivado】 管脚约束(io constraints)

一、前言 在FPGA工程中,所有的输入输出端口最终都要与FPGA IO 引脚进行绑定,需要根据需求对输入输出端口进行位置、电平标准、端口变换速率等进行约束,本文对io相关约束语法含义进行记录以便查询。 二、IO constrain 在vivado语言模板下可以…

MFC流的形式读取图片

1.基于对话框布置控件 2.给控件绑定变量 3.给按钮控件添加响应函数 void CMFC流的形式读取图片Dlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码//HDC mECGDC; // 设备描述表句柄//CPen mECGDrawPen; // ECG波形画笔//RECT mECGRect; // 在该矩形区域内画…

香橙派AI Pro开发板与YOLOv5结合实战:打造高效图像识别解决方案

引言 在人工智能和物联网快速发展的今天,图像识别技术已经成为众多应用场景中的关键组成部分。香橙派(Orange Pi)AI Pro开发板作为一款高性能、低功耗的嵌入式计算平台,为开发者提供了强大的硬件支持。而YOLOv5(You O…

OpenCV图像处理——判断轮廓是否在圆环内

要判断一个轮廓是否在圆环内&#xff0c;可以将问题分解为两个步骤&#xff1a; 确保轮廓的所有点都在外圆内。确保轮廓的所有点都在内圆外。 下面是一个完整的示例代码&#xff0c;展示如何实现这一点&#xff1a; #include <opencv2/opencv.hpp> #include <iostr…

人工智能是帮助开发人员还是取代他们?

最近&#xff0c;神经网络已经成为应用开发中不可或缺的工具。它们大大简化和加速了这一过程。 例如&#xff0c;使用GitHub Copilot&#xff0c;可以根据任务描述自动生成重复的代码部分。神经网络可以创建和运行测试&#xff0c;识别错误&#xff0c;甚至提出修复错误的方法…

昇思25天学习打卡营第21天|ResNet50迁移学习

在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化网络的权重参数或作为固定特征提取器应用于特定的任务中。 …

MySQL-ubuntu环境下安装配置mysql

文章目录 什么是数据库&#xff1f;一、ubuntu环境下安装mysql二、配置mysql配置文件1.先登上root账号2.配置文件的修改show engines \G; mysql和mysqld数据库的基础操作登录mysql创建数据库显示当前数据库使用数据库创建表插入students表数据打印students表数据select * from …

AcWing 671. DDD

给定一个整数&#xff0c;请根据下表确定并输出其对应的城市名称&#xff1a; 如果输入数字不在上表中&#xff0c;则输出 DDD nao cadastrado。 输入格式 共一行&#xff0c;包含一个整数。 输出格式 输出对应城市名称&#xff0c;如果没有对应城市名称&#xff0c;则输出…

postman macOS版安装包

链接: https://pan.baidu.com/s/1Y7j4mxB1Otmf3Ku41e7v7w?pwdfy99 提取码: fy99 安装后的效果

udp协议模拟远程输入指令控制xshell

不了解udp协议的可以先看一下udp协议下的socket函数_udp socket函数-CSDN博客 我之前还写过模拟实现xshell的模拟实现简单的shell-CSDN博客 如今我们要模拟的是让别人连网络连到我们主机&#xff0c;他可以执行命令&#xff1a; 1.接口 我们之前是用execl系列的函数来实现的…

IEEE(常用)参考文献引用格式详解 | LaTeX参考文献规范(IEEE Trans、Conf、Arxiv)

IEEE参考文献引用格式注意事项 期刊已正式出版&#xff08;有期卷号&#xff09;录用后在线访问即Early access&#xff08;无期卷号&#xff09; Arxiv论文会议论文IEEE缩写进阶其他 IEEE论文投稿前的参考文献格式检查&#xff01;&#xff08;如果一些细节你采用别的形式&…

香橙派AIpro:体验强劲算力,运行ROS系统

文章目录 前言一、香橙派AIpro开箱及功能介绍1.1香橙派AIpro开箱1.2香橙派AIpro功能介绍 二、香橙派AIpro资料下载及环境搭建2.1资料下载2.2环境搭建2.3使用串口启动进入开发板2.4使用HDMI线接入屏幕启动 三、部署ROS系统四、香橙派AIpro的使用和体验感受 前言 本篇文章将带体…

在 SwiftUI 中实战使用 MapKit API

文章目录 前言新 MapKit API 的引入控制初始地图位置相机位置的双向绑定总结 前言 SwiftUI 与 MapKit 的集成在今年发生了重大变化。在之前的 SwiftUI 版本中&#xff0c;我们将 MKMapView 的基本功能封装到名为 Map 的 SwiftUI 视图中。幸运的是&#xff0c;事情发生了变化&a…

硅谷并购中的牙刷测试

注&#xff1a;机翻&#xff0c;未校对。 In Silicon Valley, Mergers Must Meet the Toothbrush Test By David Gelles August 17, 2014 9:22 pm Credit Liz Grauman/The New York Times MOUNTAIN VIEW, Calif. — When deciding whether Google should spend millions or …

docker安装nginx并配置https

参考 docker安装nginx并配置https-腾讯云开发者社区-腾讯云 (tencent.com) 证书的生成 参见&#xff1a;SpringBoot项目配置HTTPS接口的安全访问&#xff08;openssl配置&#xff09;_配置接口访问-CSDN博客 步骤 1: 拉取Nginx镜像 docker pull nginx 好使的镜像如下&#x…

【AI】目标检测算法【R-CNN:Regions with CNN features】

1. 常用目标检测算法介绍 目标检测是计算机视觉领域的一个重要分支&#xff0c;它旨在识别并定位图像中的各种对象。以下是一些流行的目标检测算法&#xff1a; 1.1 二阶段目标检测算法 R-CNN (Regions with CNN features): 通过选择性搜索算法选取候选区域&#xff0c;然后…

【数学建模】——数学规划模型

目录 一、线性规划&#xff08;Linear Programming&#xff09; 1.1 线性规划的基本概念 1.2 线性规划的图解法 模型建立&#xff1a; 二、整数规划&#xff08;Integer Programming&#xff09; 2.1 整数规划的基本概念 2.2 整数规划的求解方法 三、非线性规划&#x…