CV之Nougat:Nougat(一种基于神经网络实现OCR功能的视觉转换器模型)的简介、安装和使用方法、案例应用之详细攻略

CV之Nougat:Nougat(一种基于神经网络实现OCR功能的视觉转换器模型)的简介、安装和使用方法、案例应用之详细攻略

目录

相关论文

《Nougat: Neural Optical Understanding for Academic Documents》的翻译与解读

Nougat的简介

Nougat的安装和使用方法

1、安装

2、使用方法

(1)、获取PDF的预测

T1、命令行接口(CLI)

T2、API

(2)、数据集

生成数据集

然后运行:

其他参数包括:

最后,创建一个包含所有图像路径、markdown文本和元信息的jsonl文件:

生成的目录结构可以如下所示:

(3)、训练

(4)、评估

3、常见问题

为什么我只得到[MISSING_PAGE]?

我可以从哪里下载模型检查点?

Nougat的案例应用


相关论文

《Nougat: Neural Optical Understanding for Academic Documents》的翻译与解读

地址

论文地址:https://arxiv.org/abs/2308.13418

时间

2023年8月25日

作者

Meta AI

摘要

科学知识主要存储在书籍和科学期刊中,通常以PDF格式存在。然而,PDF格式会导致语义信息的丢失,特别是对于数学表达式。我们提出了Nougat(Neural Optical Understanding for Academic Documents),这是一种视觉转换器模型,用于执行光学字符识别(OCR)任务,将科学文档处理成标记语言,并在新的科学文档数据集上展示了我们模型的有效性。所提出的方法为增强数字时代科学知识的可访问性提供了一个有前景的解决方案,通过弥合人类可读文档与机器可读文本之间的差距。我们发布了模型和代码,以加速未来对科学文本识别的工作。

总结

这篇文章提出了一种新的神经网络模型Nougat,它可以将学术论文转换为结构化标记文本。

背景:目前大多数科学知识都是以PDF格式存储在书籍或学术期刊中,但PDF格式会丧失一定的语义信息,尤其是数学表达式。

现有的OCR识别引擎,如Tesseract,可以识别和分类个别字符和词语,但因为它采用的是行识别的方式,因此无法理解字符之间的关系,对数学表达式识别效果不佳。

解决方案

>> Nougat模型采用视觉变换器架构,可以直接从论文页面图像输入进行识别,无需依赖OCR预处理。

>> 它使用Swin Transformer编码器提取论文图像特征,再通过解码器在自回归方式生成标记文本序列。

>> 训练时采用各种数据增强技术来提升泛化能力,如模糊、噪声等。

核心特点

>> 端到端学习,不需要任何OCR输入,直接使用论文页面图像进行识别。

>> 可以识别数字出版物以外的扫描书刊和教材。

>> 与现有方法相比,可以更好地还原数学表达式及其语义关系。

优势

>> 公开了预训练模型和代码,可促进相关领域未来工作。

>> 能够有效提升科学知识在数字时代的可访问性。

总之,Nougat提出了一种新的端到端神经网络方法来将学术论文转化为结构化标记文本,它直接使用论文图像作为输入,通过视觉变换器架构实现自动识别,解决了现有OCR方法在数学表达式识别上的不足,同时也提升了泛化能力。

Nougat的简介

Nougat是学术文档的神经光学理解。这是Nougat的官方仓库,一个能够理解LaTeX数学和表格的学术文档PDF解析器

GitHub地址:https://github.com/facebookresearch/nougat

项目页面: Nougat

Nougat的安装和使用方法

1、安装

通过pip安装:
pip install nougat-ocr

通过仓库安装:
pip install git+https://github.com/facebookresearch/nougat
注意,在Windows上:如果你想使用GPU,确保首先安装正确版本的PyTorch。按照此处的说明进行操作。




如果你想从API调用模型或生成数据集,需要额外的依赖项。通过以下方式安装:
pip install "nougat-ocr[api]" 或 pip install "nougat-ocr[dataset]"

2、使用方法

(1)、获取PDF的预测

T1、命令行接口(CLI)
要获取PDF的预测,请运行:
$ nougat path/to/file.pdf -o output_directory

也可以传递一个目录的路径或每行是PDF路径的文件路径作为位置参数:
$ nougat path/to/directory -o output_directory


使用方法
nougat [-h] [--batchsize BATCHSIZE] [--checkpoint CHECKPOINT] [--model MODEL] [--out OUT]
       [--recompute] [--markdown] [--no-skipping] pdf [pdf ...]

位置参数:

  • pdf:要处理的PDF文件。

选项:

  • -h, --help:显示帮助信息并退出
  • --batchsize BATCHSIZE, -b BATCHSIZE:使用的批处理大小。
  • --checkpoint CHECKPOINT, -c CHECKPOINT:检查点目录的路径。
  • --model MODEL_TAG, -m MODEL_TAG:使用的模型标签。
  • --out OUT, -o OUT:输出目录。
  • --recompute:重新计算已计算的PDF,丢弃以前的预测。
  • --full-precision:使用float32而不是bfloat16。在某些设置中可以加速CPU转换。
  • --no-markdown:不添加markdown兼容性的后处理步骤。
  • --markdown:添加markdown兼容性的后处理步骤(默认)。
  • --no-skipping:不应用失败检测启发式方法。
  • --pages PAGES, -p PAGES:提供页码,例如'1-4,7'表示第1到4页和第7页。仅适用于单个PDF。

默认的模型标签是0.1.0-small。如果你想使用基础模型,请使用0.1.0-base。

$ nougat path/to/file.pdf -o output_directory -m 0.1.0-base

在输出目录中,每个PDF将保存为.mmd文件,这是一种轻量级标记语言,大部分兼容Mathpix Markdown(我们使用LaTeX表格)。
注意:在某些设备上,失败检测启发式方法工作不正常。如果你遇到大量的[MISSING_PAGE]响应,尝试使用--no-skipping标志运行。相关问题:#11, #67

T2、API

使用额外的依赖项,你可以使用app.py启动一个API。调用:

$ nougat_api

通过向http://127.0.0.1:8503/predict/发送POST请求来获取PDF文件的预测。它还接受start和stop参数来限制计算的页码(包含边界)。

响应是文档的markdown文本字符串。

curl -X 'POST' \
  'http://127.0.0.1:8503/predict/' \
  -H 'accept: application/json' \
  -H 'Content-Type: multipart/form-data' \
  -F 'file=@<PDFFILE.pdf>;type=application/pdf'

要将转换限制在第1到5页,请在请求URL中使用start/stop参数:http://127.0.0.1:8503/predict/?start=1&stop=5

(2)、数据集

生成数据集

要生成数据集,你需要:
>> 包含PDF的目录
>> 包含.html文件(由LaTeXML处理的.tex文件)的目录,具有相同的文件夹结构
>> pdffigures2的二进制文件和相应的环境变量 export PDFFIGURES_PATH="/path/to/binary.jar"

然后运行:
python -m nougat.dataset.split_htmls_to_pages --html path/html/root --pdfs path/pdf/root --out path/paired/output --figure path/pdffigures/outputs

其他参数包括:
参数描述
--recompute重新计算所有拆分
--markdownMARKDOWN 输出目录
--workersWORKERS 使用的进程数
--dpiDPI 保存页面的分辨率
--timeoutTIMEOUT 每篇论文的最大时间
--tesseractTesseract 每页的OCR预测

最后,创建一个包含所有图像路径、markdown文本和元信息的jsonl文件:
python -m nougat.dataset.create_index --dir path/paired/output --out index.jsonl

对于每个jsonl文件,你还需要生成一个快速数据加载的索引映射:
python -m nougat.dataset.gen_seek file.jsonl

生成的目录结构可以如下所示:
root/
├── images
├── train.jsonl
├── train.seek.map
├── test.jsonl
├── test.seek.map
├── validation.jsonl
└── validation.seek.map

注意,路径/配对/输出中的.mmd和.json文件(此处为images)不再需要。这对于通过减少一半文件数量推送到S3存储桶很有用。

(3)、训练

要训练或微调Nougat模型,运行:

python train.py --config config/train_nougat.yaml

(4)、评估

运行:
python test.py --checkpoint path/to/checkpoint --dataset path/to/test.jsonl --save_path path/to/results.json

要获取不同文本模式的结果,运行:
python -m nougat.metrics path/to/results.json

3、常见问题

为什么我只得到[MISSING_PAGE]?

Nougat是在arXiv和PMC上找到的科学论文上训练的。你正在处理的文档是否与此相似?文档的语言是什么?Nougat对英文论文效果最佳,其他拉丁语系语言可能也有效。中文、俄文、日文等则无效。如果这些要求都满足,可能是由于CPU或较旧的GPU上失败检测的误报(#11)。目前尝试传递--no-skipping标志。

我可以从哪里下载模型检查点?

它们已上传到GitHub的发布部分。你也可以在程序第一次执行时下载它们。通过传递--model 0.1.0-{base,small}选择首选模型。

Nougat的案例应用

持续更新中……

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

短视频拍摄方式有哪些:四川鑫悦里文化传媒有限公司

​短视频拍摄方式有哪些 在数字化时代&#xff0c;短视频以其短小精悍、传播迅速的特点&#xff0c;成为了人们表达自我、分享生活的重要工具。然而&#xff0c;想要制作出引人入胜的短视频&#xff0c;除了创意和构思&#xff0c;拍摄方式的选择也至关重要。四川鑫悦里文化传…

JavaEE:Servlet创建和使用及生命周期介绍

目录 ▐ Servlet概述 ▐ Servlet的创建和使用 ▐ Servlet中方法介绍 ▐ Servlet的生命周期 ▐ Servlet概述 • Servlet是Server Applet的简称&#xff0c;意思是 用Java编写的服务器端的程序&#xff0c;Servlet被部署在服务器中&#xff0c;而服务器负责管理并调用Servle…

香橙派KunpengPro测评之使用C语言操控40pin引脚

香橙派KunpengPro测评之使用C语言操控40pin引脚 香橙派KunpengPro介绍香橙派实物图香橙派登录界面香橙派KunpengPro的登录界面香橙派KunpengPro的原始桌面香橙派KunpengPro内安装了VScode等软件香橙派KunpengPro的终端 香橙派硬件参数核心性能图形与显示接口丰富性扩展与兼容性…

2024年中国金融行业网络安全研究报告

网络安全一直是国家安全的核心组成部分&#xff0c;特别是在金融行业&#xff0c;金融机构拥有大量的敏感数据&#xff0c;包括个人信息、交易记录、财务报告等&#xff0c;这些数据的安全直接关系到消费者的利益和金融市场的稳定&#xff0c;因此金融行业在网络安全建设领域一…

短道速滑短视频:四川京之华锦信息技术公司

短道速滑短视频&#xff1a;冰雪激情的视觉盛宴 随着冬奥会的热度不断攀升&#xff0c;短道速滑作为其中一项紧张刺激、充满观赏性的运动&#xff0c;受到了越来越多人的关注。而在社交媒体和短视频平台的助力下&#xff0c;短道速滑短视频成为了人们了解、欣赏这项运动的新窗…

MPLS原理与配置

1.MPLS概述 &#xff08;1&#xff09;传统IP路由转发 &#xff08;2&#xff09;MPLS基本概念 ⦁ MPLS起源于IPv4&#xff08;Internet Protocol version 4&#xff09;&#xff0c;其核心技术可扩展到多种网络协议&#xff0c;包括IPv6&#xff08;Internet Protocol ver…

LFSR线性反馈移位寄存器及Verilog实现

一、LFSR LFSR线性反馈移位寄存器&#xff0c;通常由移位寄存器和异或门组成&#xff0c;主要用于产生伪随机序列等。 线性反馈的含义是各个寄存器的输出通过一个反馈函数连接到第一级触发器的输入&#xff1b;LFSR中的寄存器的个数被称为LFSR的级数。 LFSR分为两类&#xff…

【机器学习】K-近邻算法(KNN)全面解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 K-近邻算法&#xff08;KNN&#xff09;全面解析概述1. 基本概念与原理1.1 KNN算…

【Vue学习记录】如何通过Vue-cli创建并启动一个项目}}}}}}

1.安装node.js 略 2.安装npm.js 略 3.安装Vue 略 4.安装Vue.cli 略 步骤1-4 参考&#xff1a; 最详细的vue安装教程 5.在Vue.cli里创建一个新项目 略 6.启动这个新项目 略 步骤5-6 参考&#xff1a; 五分钟教你使用vue-cli3创建项目&#xff08;三种创建方式&#…

卢文岩博士受邀参与中国科学院大学校友论坛 解码DPU核心价值

近日&#xff0c;第五届中国科学院大学校友创新论坛正式举行&#xff0c;本次论坛聚焦科技前沿领域&#xff0c;旨在搭建高端对话平台&#xff0c;促进产学研深度融合。在大算力时代——AI技术前沿沙龙上&#xff0c;中科驭数高级副总裁、CTO卢文岩博士受邀分享《DPU——连接算…

【马蹄集】— 百度之星 2023

BD202301公园 可以先 b f s bfs bfs统计一下 t , f t,f t,f到达每个点的距离&#xff0c;还有 n n n到达其他点的距离即其他点到达 n n n的距离 然后枚举每个点 直接计算得到最小值即可 注意特判有人无法到达 n n n的情况 code: #include<bits/stdc.h> #define endl \n…

MaxKB,基于 LLM 大语言模型的知识库问答系统,开箱即用,支持快速嵌入到第三方业务系统。

MaxKB 是一款基于 LLM 大语言模型的知识库问答系统。MaxKB Max Knowledge Base&#xff0c;旨在成为企业的最强大脑。开箱即用&#xff0c;支持快速嵌入到第三方业务系统。 项目链接 github.com/1Panel-dev/MaxKB 项目介绍 MaxKB 是一款基于 LLM 大语言模型的知识库问答系统…

C++代码使用ClangCL编译注意事项

遇到cmake指定模板类工程使用msvc的clang编译器编译代码&#xff0c;代码变量出现与预期不符的问题&#xff1b; 如下&#xff1a; clangcl将实现放到头文件里则不会出现这样的情况&#xff1b; 最后按照pcl的模板类写法则解决这个问题&#xff1b;

WPF之TextBlock文本标签

TextBlock: 用于显示文本内容 常用属性 Text设置展示的文本fontsize设置字体大小FontWeight设置字体粗细FontFamily设置字体样式 实例 <Grid><TextBlock Text"显示文本"FontSize"10"FontWeight"Bold"Foreground"red">&l…

【博客20】缤果Matlab串口调试助手V1.0(中级篇)

超级好用的Matlab串口调试助手 开发工具: MATLAB 2024a中文版 (编程语言matlab) 目录 前言 一、软件概要&#xff1a; 二、软件界面&#xff1a; 1.App演示 ​ ​---- ◇♣♡♠ ---- 2.其他扩展App展示 ​编辑 三、获取 >> 源码以及Git记录&#xff1a; 总结 前…

[STM32+HAL]LD-1501MG舵机二次开发指南

一、准备材料 核心板&#xff1a;STM32F407ZGT6 舵机&#xff1a;LD-1501MG数字舵机 控制器&#xff1a;24路PWM舵机控制器 二、HAL库配置 开启串口与控制器通信 三、Keil填写代码 1、Servo.c #include "Servo.h" #include "usart.h"uint8_t Message…

计算机毕业设计 | springboot养老院管理系统 老人社区管理(附源码)

1&#xff0c;绪论 1.1 背景调研 养老院是集医疗、护理、康复、膳食、社工等服务服务于一体的综合行养老院&#xff0c;经过我们前期的调查&#xff0c;院方大部分工作采用手工操作方式,会带来工作效率过低&#xff0c;运营成本过大的问题。 院方可用合理的较少投入取得更好…

微前端探秘:初识微前端

微前端探秘&#xff1a;初识微前端 什么是微前端微前端的好处现有的微前端方案 什么是微前端 微前端是指存在于浏览器中的服务&#xff0c;其借鉴了微服务的架构理念&#xff0c;将微服务的概念扩展到了前端。 如果对微服务的概念比较陌生的话&#xff0c;可以简单的理解为微前…

媒体发布会怎么邀请媒体,到场采访报道?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体发布会的邀请和组织是一个需要精心策划的过程&#xff0c;以下是一些基本步骤和建议&#xff0c;以确保媒体发布会能够吸引媒体到场并进行有效的采访报道&#xff1a; 明确宣传目的和…

K-独立钻石(dfs),G-邪恶铭刻(贪心)

这两题&#xff0c;都是应该赛场上A出来的。 K.独立钻石 当时一直关注点在 I. Path Planning&#xff0c;没关注榜单&#xff0c;K,也能写&#xff0c;也就是dfs,从数据范围可以看出&#xff0c;直接暴力搜索。 代码 #include<bits/stdc.h> #define int long long #d…