返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

最好用的OCR来了?Mistral AI OCR介绍

[复制链接]
链载Ai 显示全部楼层 发表于 1 小时前 |阅读模式 打印 上一主题 下一主题

简要介绍

在过去,最好用的识别数学公式并进行代码转换的网站/软件莫过于Mathpix了:支持各种格式转换,比如pdf,png到tex,md,当然也包括docx等等,无论是pdf文档转换还是截图识别,从移动端的Snip App再到桌面客户端以及网页版、浏览器插件全生态的覆盖让使用体验无比丝滑。

但免费版的使用额度相当有限,而付费订阅又太贵(一年50美刀);此外,网页版还偶尔会出现网络连接不稳定的情形。

不过现在,号称地表最强的OCR工具Mistral出现了。这是一家法国的初创AI公司,可以理解为欧洲版的DeepSeek,它的价格也十分便宜(OCR功能大概1美刀可以转换上千页pdf)。

使用示例

文件上传

直接访问官网聊天界面(可能需要用手机号注册账号):

https://chat.mistral.ai/chat

像其他大语言模型一样对话框内上传文件,输入“转换成markdown”即可;比如这里我上传了一篇和DeepSeek-R1相关的论文:等待几秒钟,即可得到转换后的markdown代码。 进一步地,利用Typora或Obsidian等markdown编辑器,即可查看或转换成pdf、docx等格式(可能需要额外安装pandoc)。

网页版效果展示

更多效果展示请参阅官网介绍:

https://mistral.ai/news/mistral-ocr

这是原来的pdf文件:这是转化后并在Typora中显示的效果(主题:Newsprint):目录(带超链接)数学公式表格

可以看到,除了图片外的效果非常不错,但如果要把图片也提取出来并在相应位置保留,就需要用到下面的方法了。

进阶配置

除了在官网的对话界面处理文件外,也可以通过API调用进行批量处理。 感谢@nicekate提供的Python代码,可以实现在本地调用Mistral API进行文件处理,并且在B站上还有相应的演示视频。

  1. GitHub仓库地址: https://github.com/nicekate/mistral-ocr
  2. B站视频: 【实测 Mistral OCR :世界最佳文档理解模型?】 https://www.bilibili.com/video/BV1Bw92YiEEH

配置方法也非常简单,只需要申请一个自己的API key,然后再把上面的仓库clone下来,填入相应的API key即可。

申请API key

在控制台左侧菜单栏点击"API Keys",然后点击右上角的“Create new key”,复制即可。

https://console.mistral.ai/home

下载Python代码

先将上述仓库clone到本地:

git clone https://github.com/nicekate/mistral-ocr.git

再安装依赖项:

pip install mistralai

pdf_ocr.py中修改 API 密钥和 PDF 文件路径即可(72~73行):

API_KEY ="填入你自己的api key""

PDF_PATH = "xxx.pdf"

运行文件,即可在同目录下找到转换后的文件夹ocr_results_xxx,其中包含了转换后的markdown文件和图片文件。

本地转换效果展示

主题:Typora GitHub

批处理

有时需要同时进行多个PDF文件的转换,于是在此基础上我自己动手增加了批处理功能,可以将同一目录下的所有PDF文件进行转换。

具体修改如下:

  1. 新增get_pdf_files_in_directory函数,用于扫描指定文件夹并返回所有 PDF 文件的完整路径。
  2. __main__中,替换手动指定 PDF 文件路径的方式,改为从文件夹中自动获取 PDF 文件。
  3. 如果文件夹中没有 PDF 文件,会提示用户。 以下是新增的代码片段:
defprocess_pdfs(pdf_paths: list, api_key: str)->None:

forpdf_pathinpdf_paths:

try:

output_dir = process_pdf(pdf_path, api_key)

print(f"文件{pdf_path}处理完成,结果保存在:{output_dir}")

exceptExceptionase:

print(f"处理文件{pdf_path}时出错:{e}")



defget_pdf_files_in_directory(directory: str)-> list:

"""获取指定目录中的所有PDF文件路径"""

pdf_files = []

forfileinos.listdir(directory):

iffile.endswith(".pdf"):

pdf_files.append(os.path.join(directory, file))

returnpdf_files



if__name__ =="__main__":

# 使用示例

API_KEY ="your_mistral_api_key"

DIRECTORY ="your_pdf_file"# 指定包含PDF文件的文件夹名称



# 获取文件夹中的所有PDF文件

PDF_PATHS = get_pdf_files_in_directory(DIRECTORY)

ifnotPDF_PATHS:

print(f"目录{DIRECTORY}中没有找到PDF文件。")

else:

process_pdfs(PDF_PATHS, API_KEY)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ