Project Icon

TexTeller

端到端公式识别模型 支持多种输入格式

TexTeller是一个基于TrOCR的公式识别模型,可将图像转换为LaTeX公式。该模型使用8000万对图像-公式数据训练,具备优秀的泛化能力和准确度。TexTeller支持多种输入格式,包括扫描图像、手写公式和中英文混合公式,还提供中英文印刷体OCR功能。此外,项目集成了公式检测、段落识别和Web演示界面,便于与其他项目整合。

📄 English | 中文

𝚃𝚎𝚡𝚃𝚎𝚕𝚕𝚎𝚛

https://github.com/OleehyO/TexTeller/assets/56267907/532d1471-a72e-4960-9677-ec6c19db289f

TexTeller是一个基于TrOCR的端到端公式识别模型,能够将图像转换为相应的LaTeX公式。

TexTeller使用8000万对图像-公式数据进行训练(之前的数据集可以在这里获取),相比于LaTeX-OCR使用的10万数据集,TexTeller具有更强的泛化能力更高的准确性,覆盖了大多数使用场景。

[!NOTE] 如果您想为这个项目提供反馈或建议,欢迎在讨论区开启讨论。

另外,如果您觉得这个项目有帮助,请不要忘记给它一个星星⭐️🙏️


🔖 目录

TexTeller可以识别的图像

感谢 北京邮电大学超级计算平台 对这项工作的支持😘

🔄 更新日志

  • 📮[2024-06-06] TexTeller3.0发布! 训练数据已增加到8000万TexTeller2.0多10倍,数据多样性也有所提高)。TexTeller3.0的新特性:

    • 支持扫描图像、手写公式、中英文混合公式。

    • 具备中英文打印图像的OCR能力。

  • 📮[2024-05-02] 支持段落识别

  • 📮[2024-04-12] 公式检测模型发布!

  • 📮[2024-03-25] TexTeller2.0发布!TexTeller2.0的训练数据增加到750万(比TexTeller1.0多15倍,数据质量也有所提高)。经过训练的TexTeller2.0在测试集上表现出卓越的性能,尤其是在识别罕见符号、复杂多行公式和矩阵方面。

    这里有更多测试图像和各种识别模型的横向比较。

🚀 快速开始

  1. 克隆仓库:

    git clone https://github.com/OleehyO/TexTeller
    
  2. 安装项目依赖:

    pip install texteller
    
  3. 进入src/目录,在终端中运行以下命令开始推理:

    python inference.py -img "/path/to/image.{jpg,png}" 
    # 使用--inference-mode选项启用GPU(cuda或mps)推理
    #+例如:python inference.py -img "img.jpg" --inference-mode cuda
    

    第一次运行时,将从Hugging Face下载所需的检查点。

段落识别

如视频所示,TexTeller也能够识别整段文本。虽然TexTeller具有通用文本OCR能力,但我们仍建议使用段落识别以获得更好的结果:

  1. 下载权重并将公式检测模型放入src/models/det_model/model/目录

  2. src/目录中运行inference.py并添加-mix选项,结果将以markdown格式输出。

    python inference.py -img "/path/to/image.{jpg,png}" -mix
    

TexTeller默认使用轻量级的PaddleOCR模型来识别中英文文本。您可以尝试使用更大的模型来获得更好的中英文识别结果:

检查点模型描述大小
ch_PP-OCRv4_det.onnx默认检测模型,支持中英文文本检测4.70M
ch_PP-OCRv4_server_det.onnx高精度模型,支持中英文文本检测115M
ch_PP-OCRv4_rec.onnx默认识别模型,支持中英文文本识别10.80M
ch_PP-OCRv4_server_rec.onnx高精度模型,支持中英文文本识别90.60M

将识别/检测模型的权重放在src/models/third_party/paddleocr/checkpoints/下的det/rec/目录中,并将其重命名为default_model.onnx

[!NOTE] 段落识别无法还原文档的结构,它只能识别其内容。

🌐 网页演示

进入src/目录并运行以下命令:

./start_web.sh

在浏览器中输入http://localhost:8501即可查看网页演示。

[!NOTE]

  1. 对于Windows用户,请运行start_web.bat文件。
  2. 使用onnxruntime + GPU进行推理时,需要安装onnxruntime-gpu。

🔍 公式检测

TexTeller的公式检测模型在3,415张中文教育材料图像(包含130多种布局)和8,272张来自IBEM数据集的图像上进行训练,支持对整张图像进行公式检测。

  1. 下载模型权重并将其放置在src/models/det_model/model/目录下[链接]。

  2. src/目录下运行以下命令,结果将保存在src/subimages/目录中

进阶:批量公式识别

公式检测之后,在src/目录下运行以下命令:

python rec_infer_from_crop_imgs.py

这将使用之前的公式检测结果对所有裁剪出的公式进行批量识别,并将识别结果以txt文件形式保存在src/results/目录中。

📡 API使用

我们使用ray serve为TexTeller提供API接口,使您能够将TexTeller集成到自己的项目中。要启动服务器,首先需要进入src/目录,然后运行以下命令:

python server.py
参数描述
-ckpt权重文件路径,默认为TexTeller的预训练权重
-tknz分词器路径,默认为TexTeller的分词器
-port服务器服务端口,默认为8000
--inference-mode是否使用"cuda"或"mps"进行推理,默认为"cpu"
--num_beams束搜索的束数,默认为1
--num_replicas在服务器上运行的服务副本数量,默认为1个副本。您可以使用更多副本来实现更高的吞吐量。
--ncpu_per_replica每个服务副本使用的CPU核心数,默认为1
--ngpu_per_replica每个服务副本使用的GPU数量,默认为1。您可以将此值设置在0到1之间,以在一个GPU上运行多个服务副本来共享GPU,从而提高GPU利用率。(注意,如果--num_replicas为2,--ngpu_per_replica为0.7,则必须有2个可用的GPU)
-onnx使用Onnx Runtime进行推理,默认禁用

[!注意] 客户端演示可以在src/client/demo.py中找到,您可以参考demo.py向服务器发送请求

🏋️‍♂️ 训练

数据集

我们在src/models/ocr_model/train/dataset/目录中提供了一个示例数据集,您可以将自己的图像放在images/目录中,并在formulas.jsonl中为每个图像标注相应的公式。

准备好数据集后,您需要在**/train/dataset/loader.pyDIR_URL变量更改为您自己数据集的路径

重新训练分词器

如果您使用的是不同的数据集,可能需要重新训练分词器以获得不同的词汇表。配置好数据集后,您可以使用以下命令训练自己的分词器:

  1. src/models/tokenizer/train.py中,将new_tokenizer.save_pretrained('./your_dir_name')更改为您的自定义输出目录

    如果您想使用不同的词汇量大小(默认15K),需要在src/models/globals.py中更改VOCAB_SIZE变量

  2. src/目录下,运行以下命令:

    python -m models.tokenizer.train
    

训练模型

  1. src/train_config.yaml中修改num_processes以匹配可用于训练的GPU数量(默认为1)。

  2. src/目录下,运行以下命令:

    accelerate launch --config_file ./train_config.yaml -m models.ocr_model.train.train
    

您可以在src/models/ocr_model/train/train.py中设置自己的分词器和检查点路径(更多信息请参考train.py)。如果您使用的架构和词汇表与TexTeller相同,您还可以使用自己的数据集对TexTeller的默认权重进行微调。

src/globals.pysrc/models/ocr_model/train/train_args.py中,您可以更改模型的架构和训练超参数。

[!注意] 我们的训练脚本使用Hugging Face Transformers库,因此您可以参考他们的文档获取有关训练参数的更多详细信息和配置。

📅 计划

  • 使用更大的数据集训练模型
  • 扫描图像的识别
  • 支持英文和中文场景
  • 手写公式支持
  • PDF文档识别
  • 推理加速
  • ...

⭐️ 星标数量随时间变化

Stargazers over time

👥 贡献者

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号