rapid_latex_ocr: 更快更好用的公式图像转latex工具

Rapid Latex OCR

PyPI SemVer2.0

  • rapid_latex_ocr是一个将公式图像转为latex格式的工具。
  • 仓库中的推理代码来自修改自LaTeX-OCR,模型已经全部转为ONNX格式,并对推理代码做了精简,推理速度更快,更容易部署。
  • 仓库只有基于ONNXRuntime或者OpenVINO推理onnx格式的代码,不包含训练模型代码。如果想要训练自己的模型,请移步LaTeX-OCR。
  • 如果有帮助到您的话,请给个小星星⭐或者赞助一杯咖啡(点击页面最上面的Sponsor中链接)
  • 欢迎各位小伙伴积极贡献,让这个工具更好。

使用

  1. 安装

    1. pip安装rapid_latext_ocr库。因将模型打包到whl包中超出pypi限制(100M),因此需要单独下载模型。

      pip install rapid_latex_ocr
      
    2. 下载模型(Google Drive | 百度网盘),初始化时,指定模型路径即可,详细参见下一部分。

      模型名称大小
      image_resizer.onnx37.1M
      encoder.onnx84.8M
      decoder.onnx48.5M
  2. 使用

    • 脚本使用:
      from rapid_latex_ocr import LatexOCR
      
      image_resizer_path = 'models/image_resizer.onnx'
      encoder_path = 'models/encoder.onnx'
      decoder_path = 'models/decoder.onnx'
      tokenizer_json = 'models/tokenizer.json'
      model = LatexOCR(image_resizer_path=image_resizer_path,
                      encoder_path=encoder_path,
                      decoder_path=decoder_path,
                      tokenizer_json=tokenizer_json)
      
      img_path = "tests/test_files/6.png"
      with open(img_path, "rb") as f:
          data = f.read()
      
      result, elapse = model(data)
      
      print(result)
      # {\frac{x^{2}}{a^{2}}}-{\frac{y^{2}}{b^{2}}}=1
      
      print(elapse)
      # 0.4131628000000003
      
    • 命令行使用
      $ rapid_latex_ocr -h
      usage: rapid_latex_ocr [-h] [-img_resizer IMAGE_RESIZER_PATH]
                          [-encdoer ENCODER_PATH] [-decoder DECODER_PATH]
                          [-tokenizer TOKENIZER_JSON]
                          img_path
      
      positional arguments:
      img_path              Only img path of the formula.
      
      optional arguments:
      -h, --help            show this help message and exit
      -img_resizer IMAGE_RESIZER_PATH, --image_resizer_path IMAGE_RESIZER_PATH
      -encdoer ENCODER_PATH, --encoder_path ENCODER_PATH
      -decoder DECODER_PATH, --decoder_path DECODER_PATH
      -tokenizer TOKENIZER_JSON, --tokenizer_json TOKENIZER_JSON
      
      $ rapid_latex_ocr tests/test_files/6.png \
          -img_resizer models/image_resizer.onnx \
          -encoder models/encoder.onnx \
          -dedocer models/decoder.onnx \
          -tokenizer models/tokenizer.json
      # ('{\\frac{x^{2}}{a^{2}}}-{\\frac{y^{2}}{b^{2}}}=1', 0.47902780000000034)
      
  3. 输入输出说明

    • 输入(Union[str, Path, bytes]):只含有公式的图像。
    • 输出(Tuple[str, float])(识别结果, 耗时), 具体参见下例:
      (
         '{\\frac{x^{2}}{a^{2}}}-{\\frac{y^{2}}{b^{2}}}=1',
         0.47902780000000034
      )
      

详情,可移步:RapidLatexOCR

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

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

相关文章

【Linux】基础开发工具——make

文章目录 前言:一、认识make和makefile二、依赖关系和依赖方法三、make工作原理 前言: 上一期分享了在Linux下编译源代码的两个工具,gcc和g。每次编译源代码,都要输入一串很长的指令,这个过程显然是十分复杂&#xff…

【Go|第8期】Lorca读取HTML的三种方式

日期:2023年7月16日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

天天刷题-->LeetCode(最长回文子串)

个人名片: 🐅作者简介:一名大二在校生,热爱生活,爱好敲码! \ 💅个人主页 🥇:holy-wangle ➡系列内容: 🖼️ tkinter前端窗口界面创建与优化 &…

JVM内存结构——前言

前提 1. 认识JVM,什么是JVM 简单来说,就是java程序的运行环境(java二进制字节码的运行环境) 1.1 JVM (java虚拟机)的好处 : 一次编写,到处运行的机制 (因为java语言是跨…

残差网络(ResNet) -深度学习(Residual Networks (ResNet) – Deep Learning)

在第一个基于cnn的架构(AlexNet)赢得ImageNet 2012比赛之后,每个随后的获胜架构都在深度神经网络中使用更多的层来降低错误率。这适用于较少的层数,但当我们增加层数时,深度学习中会出现一个常见的问题,称为消失/爆炸梯度。这会导…

可靠的手机问题修复工具分享 - 修复各种 Android 系统问题

一般来说,安卓手机都可以流畅运行。但不幸的是,有时您的Android手机可能无法正常运行,例如无响应、突然重启等。在这种情况下,您将需要Android手机维修软件。这些 Android 修复工具可以帮助您轻松解决此类问题,并还给您…

5.3 Python高级特性之-列表生成式、生成器、迭代器

一、 列表生成式 是Python内置的非常简单却强大的可以用来创建list的生成式 具体可根据如下案例理解,且代码也是可用的""" 1、 生成[0,1,2,3,4,5,6]这样列表 """ print(list(range(0, 7))) """ 2、 生成[0&#xff0…

【数据结构】树与二叉树(上)

目录 前言: 一、树: 1.树的概念: 2.树的相关概念: 3.树的表示: 4.书的实际使用场景: 二、二叉树: 1.二叉树的概念: 2.两种特殊二叉树: ①.满二叉树:…

在Vue种使用Vant框架

第一步:打开Vant框架地址 https://vant-contrib.gitee.io/vant/v2/#/zh-CN/home 第二步: 安装 第三步:引入(我这里使用的是按需导入) 执行命令: npm i babel-plugin-import -D ①:src下创建个…

Oracle解析JSON字符串

Oracle解析JSON字符串 假设某个字段存储的JSON字符串,我们不想查出来后通过一些常见的编程语言处理(JSON.parse()或者是JSONObject.parseObject()等),想直接在数据库上处理,又该如何书写呢? 其实在ORACLE中…

小程序api的promise化

小程序根目录cmd运行安装命令 npm install --save miniprogram-api-promise1.0.4 安装完成之后先到根目录中删除miniprogram_npm文件夹(不删除构建npm时可能会出现问题) 删除之后再在工具中点击构建npm 构建成功之后会看到根目录中重新出现了miniprogram_npm文件夹 在app.j…

RNN LSTM

参考资料: 《机器学习2022》李宏毅史上最详细循环神经网络讲解(RNN/LSTM/GRU) - 知乎 (zhihu.com) LSTM如何来避免梯度弥散和梯度爆炸? - 知乎 (zhihu.com) 1 RNN 的结构 首先考虑这样一个 slot filling 问题: 注意…

(简单)剑指Offer 21. 调整数组顺序使奇数位于偶数前面 Java

记数组nums的长度为n。从先nums左侧开始遍历,如果遇到的是奇数,就表示这个元素已经调整完成,继续从左往右遍历,直到遇到一个偶数。然后从nums右侧开始遍历,如果遇到的是偶数,就表示这个元素已经调整完成了&…

[JVM] 1. 初步认识JVM

核心思想: “Write Once, Run anywhere”. 各种语言通过编译器转换成字节码文件,在JVM上运行。 一、Java虚拟机 Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成…

辅助驾驶功能开发-功能规范篇(27)-2-导航式巡航辅助NCA

书接上回 2.2.2.3规划控制模块 2.2.2.3.1.全局导航规划 当用户输入导航终点时,全局导航规划模块会根据高精地图的覆盖区域将全局导航路径分为ICA,NCA可用段。实现ICA/NCA功能的划分及自动升降级。 当自车未按照导航路径行驶时(如未使出指定匝道,路口未…

折叠屏手机的屏幕,华为Mate X3给出了一份“内外兼修”的解决方案

说起折叠屏手机,屏幕一直都是这个领域的重头戏,很多人都对折叠屏手机有一种刻板印象,那就是脆弱。但是,3月份华为最新推出的Mate X3可以说是非常的亮眼,在内外屏幕、水滴铰链、影像系统等多个核心部件的全方位提升&…

Python面向对象学习整理(一)

一、面向对象中的几点概念 1.1 什么是类? 类:用户定义的对象原型(prototype),该原型定义了一组可描述该类任何对象的属性,属性是数据成员(类变量 和 实例变量)和方法,可…

FPGA实验三:状态机的设计

目录 一、实验目的 二、实验要求 三、实验代码 1.design source文件部分代码 2.测试文件代码 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 (1)设计好序列检测器 (2)仿真波形(检测11010) 3…

Python爬虫实战之原神公告获取

前言 好久不见了吧,博主最近也是成为了准高三,没有太多时间去创作文章了,所以这篇文章很有可能是高考前最后一篇文章了(也不一定😉) 言归正传,本次文章主要讲解如何去爬取原神官网的公告(我不玩原神!&…

英飞凌BLDC驱动芯片替换-屹晶微

EG12521替代IR2106,NCP5106 EG2003替代IR2003 EG2103替代IR2103、IRS2003,IRS2108 EG2104替代IR2104 EG2104D替代IR2104、IR2008、IR2004 EG2104M替代IR2104、IR2008、IR2004 EG2104S替代IR2104 EG2106替代IR2106、IR2101、FAN7382、IRS2005、NCP…
最新文章