【学习工作赛道】Doc2LaTeX - 课件 PDF 转 LaTeX 智能排版工具

【学习工作赛道】Doc2LaTeX - 课件 PDF 转 LaTeX 智能排版工具

0. 先和大家打个招呼吧 :waving_hand:

我是谁:一名在读大学生,平时课程多,老师发的课件都是 PDF,整理笔记时总是头疼。

我是怎么用 TRAE 把 Demo 做出来的:说实话,我没有正经的软件开发经验,之前从没部署过服务器,连 Docker 是什么都不太清楚。这个 Demo 完全是我把脑子里想做的事一句句讲给 TRAE 听,它帮我一点点做出来的。最神奇的一步是:我说「我想把 PDF 里的数学公式自动转成 LaTeX」,TRAE 就直接帮我把整段转换逻辑写出来了,代码量将近 1500 行。如果让我自己写,我估计一个月都搞不定。还有部署——我原本以为要把代码放到公网访问是一件很难的事,结果在 TRAE 的指导下,从买服务器到配置 systemd 服务,一步一步跟着做,最后真的打开了公网链接,那种成就感很难形容。


1. Demo 简介

是什么:Web 应用(基于 FastAPI + 原生前端单页应用)

面向谁:高校学生、教师、科研人员 —— 任何需要将课件 PDF 转为可编辑 LaTeX 文档的人

主要功能:

  1. PDF 智能解析与结构化提取:自动识别 PDF 中的标题层级(章/节/小节)、正文段落、数学公式(希腊字母、上下标、积分、求和等 50+ 种数学符号)、选择题/填空题等题型结构,将非结构化的 PDF 转化为结构化的 LaTeX 源码。

  2. 三种打印排版模板:

    • 讲义模式:A4 双栏紧凑排版,适合课堂讲义打印,节省纸张;
    • 笔记模式:单栏排版,右侧留白区域供手写补充笔记;
    • 复习模式:9pt 字号极致紧凑,公式带高亮框,适合考前复习速览。
  3. 在线预览与一键下载:转换完成后支持 LaTeX 源码实时预览(语法高亮)、PDF 编译预览(XeLaTeX 编译,图片渲染避免水印)、一键下载 .tex 源文件和编译后的 PDF 文件。





2. Demo 创作思路

灵感来源:在日常学习中,老师常以 PDF 格式发布课件。当需要对课件进行二次整理(合并多章节、添加个人笔记、重新排版打印)时,PDF 格式的不可编辑性成为很大障碍。手动用 LaTeX 重写公式和排版既耗时又容易出错。

想解决的问题:

  • PDF 课件不可编辑,需要重新整理时只能手动重排;
  • 课件中的数学公式(分数、积分、矩阵等)手动转写为 LaTeX 极其繁琐,容易出错;
  • 不同场景(课堂听课、考前复习、笔记补充)对排版格式有不同需求,但 PDF 无法灵活调整;
  • 现有的 PDF 转 LaTeX 工具(如 Mathpix)多为付费服务,对学生群体不够友好。

为什么做这个方向:LaTeX 是学术界和高校的通用排版语言,但学习门槛高、手动编写效率低。如果能自动将 PDF 转为 LaTeX 源码,用户就可以在源码层面自由编辑、重组、重新排版,大幅提升学习和科研效率。这是一个对高校学生有真实价值、同时技术上足够有挑战性的方向。


3. Demo 体验地址

公开访问链接:http://121.41.173.100:8080

打开链接后,上传任意 PDF 课件文件,选择模板,点击「开始转换」即可体验完整功能。


4. TRAE 实践过程

整个项目从零开始,完全使用 TRAE IDE 完成。以下是完整的开发流程:

第一步:需求架构与设计

向 TRAE 描述了需求:「一个将课件 PDF 转为 LaTeX 排版文档的 Web 工具,支持多种打印模板」。TRAE 帮我分析了技术方案并确定了架构:

  • 后端:Python + FastAPI,使用 PyMuPDF 逐页提取 PDF 文本、字体大小、加粗状态等格式信息
  • 前端:原生 HTML/CSS/JavaScript 单页应用,无框架依赖,轻量高效
  • 编译:XeLaTeX 编译 LaTeX 源码为 PDF,支持中文(ctex 宏包)
  • 部署:Docker 容器化,systemd 服务管理

Session ID:1074693747247258:093d7513ca7e3a76a1992973f30d3ac9_6a5120599f9de36280d9c228.6a51205b4e3cdf0adb5b2db0.6a5120599f9de36280d9c229:TRAE Work CN.0.1.34.no_sid.no_ppe.T(2026/7/11 00:49:26)

第二步:直接生成 Demo

在架构确定后,TRAE 直接生成了完整的可运行 Demo,包括前后端全部代码。

后端核心引擎(约 1500 行 Python 代码):

  • 数学公式检测与转换:建立了 15 组正则模式(涵盖函数符号、希腊字母、上下标 Unicode、数学运算符等)和 70+ 条符号替换规则,自动将 PDF 中的数学表达式转为 LaTeX 命令
  • 智能标题识别:根据字体大小、加粗状态、文本模式(「第一章」、数字编号等)自动识别多级标题,正确归因父子层级关系
  • 题型结构解析:专门处理选择题(题干与选项自动分行)、填空题、判断题等考试题型
  • LaTeX 文档生成:根据选择的模板生成完整 LaTeX 文档(含导言区、文档类、宏包、几何参数配置)
  • XeLaTeX 自动编译:转换完成后自动调用 XeLaTeX 编译为 PDF

前端界面(约 789 行代码):

  • 拖拽上传:支持拖拽和点击两种方式选择 PDF 文件
  • 可视化模板选择器:三种模板以卡片形式展示,带图标、名称和描述,点击即选
  • LaTeX 语法高亮:自定义高亮引擎,区分命令、注释、花括号、数学环境等元素
  • 双栏对比视图:左侧 LaTeX 源码、右侧 PDF 预览,支持「源码 + 预览」和「PDF 全屏预览」两种模式切换
  • 转换历史记录:自动记录本次会话的转换历史,方便对比不同模板效果

Session ID:1074693747247258:675d5589104ee62c853672b8b514d961_6a5120599f9de36280d9c228.6a5123634e3cdf0adb5b2e9b.6a5123635a8ec826a7764bd8:TRAE Work CN.0.1.34.no_sid.no_ppe.T(2026/7/11 01:02:37)

第三步:修复 Bug 和修正错误

直接使用 TRAE 生成的初始版本后,在处理真实课件 PDF 时发现了多处格式问题。在 TRAE 的辅助下,逐一高效定位和修复:

  1. 答案格式修复:选择题答案中 [(1)] 的额外标号被错误保留,通过优化正则表达式清洗逻辑解决
  2. 选项分行处理:选择题选项与题干混在同一行,通过解析选项结构调整为每个选项独立成行
  3. 子问题编号归因:4. 标号的内容为题干、5. 6. 7. 为其子问题,通过优化标题识别逻辑正确归因层级关系
  4. 特殊字符处理:修复了 textasciicircum 等特殊 LaTeX 字符的转义问题

【截图 - Bug 修复】:

Session ID:1074693747247258:9eb592fe43d33a7e8885853827c7c5a7_6a5120599f9de36280d9c228.6a560fd193c542a6c0cc91a3.6a560fd1bd19df054030228d:TRAE Work CN.0.1.34.no_sid.no_ppe.T(2026/7/14 18:39:18)

第四步:部署指导

项目完善后,在 TRAE 的指导下完成了线上部署:

  • TRAE 编写了 Dockerfile(基于 Ubuntu 22.04,集成 Python 运行时 + XeLaTeX 编译环境 + 中文字体)
  • 完成了阿里云 ECS 服务器的部署配置(systemd 服务管理、安全组端口开放)
  • 部署过程中还发现了服务配置指向错误文件的问题(简化版 vs 完整版),在 TRAE 指导下修正了 systemd 的 ExecStart 路径
  • 最终项目成功运行在公网环境,可随时访问

【截图 - 部署指导】:

Session ID:1074693747247258:566abc061d1cf9ea7c3de8d5e3375e3d_6a5120599f9de36280d9c228.6a566719d02210703f849e62.6a5667191f62baf88966ab69:TRAE Work CN.0.1.34.no_sid.no_ppe.T(2026/7/15 00:44:15)

5. 对应的报名审核通过的帖子链接

很不错的设计!!已投票!期待后续迭代,相互支持一下~~~ 【生活娱乐赛道】《机闹工厂》—— 像素无人车间模拟器

好有用的小工具!很厉害!

已投票~也来我的帖子投票留言互动吧~
为听障人士做的公益AI服务员
AI服务员-无声有市:一部手机,让无声摊位也能开口接单

1 个赞

目前只是demo版本,功能也比较简陋,由于是本人第一次开发部署一个web应用,大家可以友好提出修改意见,后续打算扩展功能,比如上传ppt,word也可以转成latex编译之后可以下载pdf。