当前位置: 首页 > news >正文

图像截屏公式识别——LaTeX-OCR安装与使用

一、简介

LaTeX-OCR 是一个开源的光学字符识别(OCR)软件,专为 LaTeX 文档提供支持。其主要目的是帮助用户将扫描的文档转换为 LaTeX 编辑器可以使用的可编辑文本,从而方便进行修改、编辑和排版。LaTeX广泛用于科技、数学、工程等领域的文档编写。而 OCR 技术则用于将图像中的文字转换为计算机可编辑的文本。LaTeX-OCR 的结合使得用户能够更方便地将扫描得到的文档内容转换为 LaTeX 格式,为文档的后续编辑和排版提供了便利。
在这里插入图片描述

  1. 高精度 OCR: LaTeX-OCR采用先进的OCR技术,能够高度准确地识别扫描文档中的字符,并以文本形式输出。这确保了转换后的文本质量,为后续编辑提供了可靠的基础。

  2. 支持 LaTeX 格式: 该软件专门为LaTeX文档设计,能够保留源文档中的LaTeX语法和格式。这意味着输出的文本与原始LaTeX文档一致,用户无需额外的格式调整。

  3. 多语言支持: LaTeX-OCR支持多种语言,包括英语、西班牙语、德语、法语等主流语言。这使得它适用于全球范围内的不同语言环境,提高了灵活性和实用性。

  4. 易于使用: 软件提供直观的用户界面,使用户能够轻松导入扫描文档、选择适当的设置,并以最少的步骤完成OCR过程。用户友好的设计有助于提高效率,降低使用门槛,使更多人能够受益于该工具。

二、环境安装

LaTeX-OCR可以从源码进行安装,也可以直接用pip来安装,源码地址:https://github.com/lukas-blecher/LaTeX-OCR,我这里直接使用pip进行安装,为了方便管理环境,这里使用conda创建虚拟环境。

1.环境安装

conda create -n latex python=3.10
activate latex
pip install "pix2tex[gui]"

在这里插入图片描述

2.启动与使用

latexocr

第一次启动的时候,它会去下载两个模型,可能会很慢,等等就可以,如果下载不下来,可以直接去官网下载后,放到指定的目录。
在这里插入图片描述
启动完成之后,出现UI交互界面,使用快捷键或者直接点击截屏识别:
在这里插入图片描述

3.识别

识别一个复杂一点的公式,如果识别得不精准,可以自己手动调节Temperature值:
在这里插入图片描述
下面是生成的LaTeX 表示方法,把它复制到支持LaTeX 表示方法的编辑器就可以不用那么麻烦自己去输入各种符号了

L I = − 1 N ∑ i = 1 N ∣ O g exp ⁡ ( s i m ( z i I , z i T ) / τ ) ∑ j = 1 N exp ⁡ ( s i m ( z i I , z j T ) / τ ) L_{I}=-\frac{1}{N}\sum_{i=1}^{N}|_{\mathrm{Og}}\frac{\exp(\mathrm{sim}(z_{i}^{I},z_{i}^{T})/\tau)}{\sum_{j=1}^{N}\exp(\mathrm{sim}(z_{i}^{I},z_{j}^{T})/\tau)} LI=N1i=1NOgj=1Nexp(sim(ziI,zjT)/τ)exp(sim(ziI,ziT)/τ)

4.代码调用

from PIL import Image
from pix2tex.cli import LatexOCRimg = Image.open('path/to/image.png')
model = LatexOCR()
print(model(img))

作者指出,该模型在较小分辨率的图像上表现最佳。为了提高其效果,添加了一个预处理步骤。在这一步中,另一个神经网络会预测输入图像的最佳分辨率。随后,定制图像会被自动调整大小,以更好地匹配训练数据的特征。这个方法旨在提升模型在真实场景中遇到的图像的性能。然而,需要注意的是,该模型可能不能在处理极大图像时达到最佳效果。因此,在拍摄图片之前,不建议进行过度放大。

5.处理步骤

在这里插入图片描述

http://www.lryc.cn/news/259656.html

相关文章:

  • LabVIEW与Tektronix示波器实现电源测试自动化
  • 青少年CTF-Crypto(Morse code/ASCII和凯撒)
  • Vue3-16-【v-model】 表单数据绑定
  • 【Flink on k8s】- 12 - Flink kubernetes operator 的高级特性
  • 量子芯片技术:未来的计算革命
  • vaptcha-手势验证码
  • 【一种用opencv实现高斯曲线拟合的方法】
  • find_package 和 find_library的区别
  • socket是如何进行通信的
  • STM32-固件打包部署
  • 微信机器人如何使用?好用吗?好奇
  • ARMV8 - A64 - 函数调用,内存栈操作
  • MyBatis 四大核心组件之 ResultSetHandler 源码解析
  • docker-compose 单机容器编排
  • springboot项目使用Layui作为前端UI的一系列前后端交互的解决方法
  • 【Linux】Firewalld防火墙新增端口、开启、查看等
  • 学习笔记 -- TVS管选型参考
  • 功能更新|免费敏捷工具Leangoo领歌私有部署新增第三方身份认证和API对接
  • 重生奇迹mu战士加点
  • 【数据结构(十一·多路查找树)】B树、B+树、B*树(6)
  • 弟弟的作业
  • 代码随想录算法训练营第37天|● 738.单调递增的数字 ● 968.监控二叉树 ● 总结
  • 出现 java: 找不到符号 符号: 变量 log 的解决方法
  • 大数据机器学习与深度学习—— 生成对抗网络(GAN)
  • vue前端访问Django channels WebSocket失败
  • 厉害了!水浸监控技术有升级啦
  • 【开题报告】基于SpringBoot的大学生心理教育平台的设计与实现
  • 376. 摆动序列
  • 现在个人想上架微信小游戏已经这么难了吗...
  • C语言数据结构-----二叉树(2)堆的深入理解及应用、链式二叉树的讲解及代码实现