MinerU + PaddleOCR:从扫描PDF到结构化Markdown的完整解析方案

1. 纸上谈兵容易,实操被 PDF 毒打:OCR 管线里那些“单个工具解不了”的问题

我最早接触 OCR 的时候,心态非常简单:找个开源的识别库,把图片丢进去,出来文字,不就完事了吗?真正被“毒打”是在处理真实的扫描版 PDF 之后。PDF 不是一张图,它是一整页版式,有标题、正文、页眉页脚、表格、图片、公式、多栏排布,甚至还有批注、水印、印章。普通 OCR 工具把整页当成一张大图去识别,出来的文本顺序经常是乱的——先念了页眉,再念右下角的注释,然后才回到正文第一行,根本没法直接用。

这里要先说清楚一套基本概念:完整 OCR 不只是“认字”,而是一条管线(Pipeline)。管线至少包含四个环节。

  • 文本检测:定位图片里哪些区域有文字,画出一个个框。
  • 文本识别:把框里的字形转换成计算机可读的字符串。
  • 版面分析:判断每个区域属于什么类型——标题、正文、表格、图片、公式等。
  • 阅读顺序还原:确定这些区域谁先谁后,恢复人类阅读时的逻辑先后。

很多人在“能用”和“好用”之间反复挣扎,就是因为手里的工具只擅长前两步,也就是检测和识别,第三步和第四步完全缺位。PaddleOCR 其实已经比其他开源项目往前走了一大截,它有版面分析模型、表格识别模型,也做了不少结构化输出尝试。但真拿到多栏论文、复杂表格、带公式的教材页,输出依然容易串行。不是它弱,而是它作为一个 OCR 引擎,设计目标本来就定位在“识别”这个层面,文档解析这种“顶层建筑”不是它最本质的主场。

我见过一个典型例子:某开发者在群里贴出扫描版财报,用 PaddleOCR 直接跑,识别率看着挺高,但输出是一长串没有换行、没有层级、表格横竖颠倒的纯文本,还得人工花半个多小时重新排版。他当时感慨:“识别是识了,可我宁可自己没有识别过。”这其实就是“能用”和“好用”之间最扎心的差距。

所以当我看到 MinerU 这个开源文档解析项目时,第一反应是:它不是在跟 PaddleOCR 抢活,而是在补 PaddleOCR 最不擅长的“结构化”环节。它把 PDF 解析成 Markdown 或 JSON,里面包含版面顺序、标题层级、表格结构、公式 LaTeX 代码。更关键的是,它支持把底层 OCR 引擎切换成 PaddleOCR,让 MinerU 负责“怎么读才是对的”,PaddleOCR 负责“字到底长什么样”。这两个项目天然就是上下游关系,组合起来才算完整闭环。

2. MinerU 在这里到底补了什么:从整页 PDF 到结构化 Markdown 的完整还原

MinerU 的开源定位很明确:把 PDF 转成干净的 Markdown / JSON。听着简单,实际做起来非常恶心,因为 PDF 内部没有“段落”这个概念,只有文本框、图片、矢量路径,真正的语义结构得靠算法重新推断。

2.1 MinerU 管全局,PaddleOCR 管局部,职责是怎么划分的

在我实际使用的过程里,MinerU 和 PaddleOCR 的分工可以这样理解:MinerU 像一位编辑,先在页面上框出“这里是标题”“这里是正文”“这里是表格”“这里是公式”,然后决定阅读顺序;PaddleOCR 像一位打字员,把编辑圈好的每个区域里的字形识别成文字。编辑不会逐字读,打字员也不需要管全局版面,各管一段,恰好互补。

MinerU 内置的模型体系包含了版面检测、公式检测、公式识别、表格识别等多个子模型。它自己也默认带文本识别能力,你也可以在配置里切换成 PaddleOCR。切换之后,版面分析和阅读顺序仍然由 MinerU 控制,而真正的字符识别交给 PaddleOCR 的 PP-OCR 系列模型,尤其是中文场景,识别效果有明显提升。

2.2 为什么表格和公式是结构化解析的两座大山

普通人看 PDF 里的表格,一眼就知道哪列是“姓名”,哪列是“分数”。OCR 引擎看到的却是一堆横线、竖线、文字块。传统表格识别需要先检测出表格区域,再提取单元格结构,最后把每个单元格内的文字对应进去。PaddleOCR 有自己的表格识别模型,单独用没问题;但当表格跨页、含合并单元格、带嵌套图片时,PaddleOCR 的输出会退化成一长串拼接文本。

MinerU 对表格的处理路径是识别成 HTML 或 Markdown 表格结构,再让底层 OCR 引擎去填格子里的内容。这样即使某个格子识别错了,至少行列关系还在,修改成本低很多。

公式则是另一个极端。普通 OCR 把公式当普通文本识别出来,结果是“x2+y2=z2”这种完全不可用的字符串。MinerU 会走公式检测 + 公式识别的专门路径,输出 LaTeX 源码,比如x^2 + y^2 = z^2。这部分能力是 MinerU 管道自带的,跟用不用 PaddleOCR 关系不大,但两者组合后,中文正文识别和公式识别各干各的,互不干扰,最终拼装到同一个 Markdown 文件里,效果比单用任何一方都完整。

2.3 阅读顺序还原:被大多数人忽略的隐藏价值

单用 PaddleOCR 解析双栏论文时,最烦的是什么?文字先从左栏第一行蹦到右栏第一行,再跳回左栏第二行,顺序完全乱掉。MinerU 的管线里有专门的阅读顺序模型,会根据版面区域的坐标、大小、类型做全局排序,尽量还原“先左后右、先上后下”的自然阅读顺序。

这块能力单独拿出来对比可能感知不强,但一旦你要把 OCR 结果喂给大模型做知识库问答,阅读顺序直接决定检索切片的语义完整性。顺序错了,整个知识库的质量都会崩。MinerU 在这里的价值,比“识别率提升多少个百分点”更重要。

3. 实战组合:把一份扫描 PDF 还原成干净 Markdown 的完整流程

理论说了一堆,下面直接上实操。我用一份六页左右、带中文正文、一个跨页表格、三个公式的扫描版技术文档做测试,覆盖从环境准备到出结果的完整链路。

3.1 环境准备与安装细节

MinerU 的安装推荐走 pip,但强烈建议用独立的 Python 虚拟环境,避免跟系统里的其他包冲突。PaddleOCR 这边也建议装最新发布版,注意 PaddleOCR 分为两代接口,我这里的经验基于新版 PaddleOCR 的 Python API(旧版直接塞进 MinerU 作为后端不一定兼容)。

# 创建独立环境,Python 版本选 3.10 附近比较稳 conda create -n docparse python=3.10 -y conda activate docparse # 安装 MinerU,这里以官方 PyPI 包为主 pip install magic-pdf[full] # 安装 PaddleOCR,CPU 版和 GPU 版差别只在 paddlepaddle 那一层 pip install paddlepaddle pip install paddleocr

装完 MinerU 以后,默认会需要下载模型权重。国内网络环境不太稳定,通常可以通过环境变量或模型目录指定本地模型路径。第一次跑的时候建议先执行一次简单的解析命令,让它把模型都拉下来,或者手动把模型包放到指定目录,省得后面反复等下载。

3.2 命令行方式:最小可用配置跑通

MinerU 提供命令行工具magic-pdf,跑一次最简单的解析:

magic-pdf -p sample.pdf -o ./output -m auto

这个-m auto会让 MinerU 自动判断文档是文本型还是扫描型,扫描型才会走完整 OCR 链路。但注意,默认情况下 MinerU 的 OCR 引擎不一定是 PaddleOCR,需要进配置文件改一下。配置路径通常在~/.config/magic-pdf/下,找到magic-pdf.json(或类似名称),把文本识别后端切到 PaddleOCR,并填上 PaddleOCR 的若干参数。

{ "ocr_engine": "paddleocr", "paddleocr_config": { "lang": "ch", "use_gpu": true } }

配置里把lang设为ch表示中文识别,use_gpu根据机器情况开。改完再跑一遍,就能看到 MinerU 在日志里输出调用 PaddleOCR 的记录。整个过程比单用 PaddleOCR 多了一道“版面理解”,但省掉了后面大量手工整理工作。

3.3 Python API 方式:精细控制每一步

命令行适合快速验证,想真正把两个项目揉进自己的处理流程,建议直接用 Python API。MinerU 的核心工具类可以传入自定义的 OCR 实例,我在项目里是这么组合的:

from magic_pdf.dict2md import dict_to_markdown from magic_pdf.data.data_reader_writer import FileBasedDataWriter from magic_pdf.data.dataset import PdfDataset from magic_pdf.model.doc_analyze_by_custom_model import DocAnalyzeByCustomModel from magic_pdf.operators.models import InferenceResult # 这里先用 PaddleOCR 做一次文本识别(实际工程中建议做成可复用的识别器) from paddleocr import PaddleOCR ocr = PaddleOCR( lang="ch", use_gpu=True, det_db_thresh=0.3, # 检测阈值,低一点能多框出模糊文字 det_db_box_thresh=0.5, # 文本框过滤阈值 rec_algorithm="SVTR_LCNet" # 识别模型,中文场景选这个比较稳 ) # 构造 MinerU 的解析配置,核心是指定用传入的 OCR 引擎 device = "cuda" model_manager = DocAnalyzeByCustomModel(device=device) with open("sample.pdf", "rb") as f: pdf_bytes = f.read() dataset = PdfDataset(pdf_bytes, model_manager, ocr) inference_result = InferenceResult(dataset) # 省略中间若干初始化流程,实际项目里按官方 API 文档逐步走

这里我只是演示核心思路:MinerU 负责版面分析、阅读顺序、表格与公式还原,PaddleOCR 负责字符识别。真正落地的项目里,还可以在 PaddleOCR 识别前做图像预处理——灰度化、去噪、增强对比度——这些对扫描件尤其重要。MinerU 自身也有图像预处理逻辑,但叠加一层 Denoise 往往能带来几个点的准确率提升。

输出侧,MinerU 最终会给出 Markdown 格式的正文、图片路径、表格 HTML、公式 LaTeX,这些内容拼装后就是一份近乎原版排版的文档。我一般还会输出一份 JSON,方便下游做结构化存储。

4. 实测对比:同一份文档、三种方案,结果差在哪

为了说清楚这个组合到底值不值得折腾,我用同一份扫描版中文技术文档做了三组对比实验,文档包含标题、正文、一个跨页表格、三个行内公式、一组页眉页脚。

测试场景单用 PaddleOCR单用 MinerU 内置识别MinerU + PaddleOCR
中文正文能识别,但顺序偶有错乱,段落边界丢失段落结构正确,个别字识别错段落与顺序正确,识别准确率最高
跨页表格行列关系混乱,输出为长串文本表格结构基本还原,单元格文字有少量错字表格结构完整,单元格文字错误最少
公式输出纯文本形式,形如“x2 + y2 = z2”输出 LaTeX,结构可读输出 LaTeX,且周围中文上下文识别更准
页眉页脚混在正文里,影响语义能识别为单独区域并丢弃能识别、能丢弃,且不影响正文阅读顺序
版面顺序基本靠运气,双栏场景易串顺序正确顺序正确,且文字层更干净

单独看 PaddleOCR 的识别率,其实不低,但输出形态太原始。单独看 MinerU 的默认识别,版面和结构都在,但遇到中文字形复杂的扫描页,个别地方出错明显。两者一组合,效果补得相当稳定。

再放一段简化的输出对比,感受更直观。

单用 PaddleOCR 出来的中间片段:

数据模型设计方法主要包括概念模型设计、逻辑模型设计和物理模型设计。 数据建模过程中的核心任务包括识别实体、定义属性、 以及确定实体之间的关系。设某实体集 E = {e1, e2, e3}, 属性集 A = {a1, a2, a3}。

MinerU + PaddleOCR 出来的 Markdown 片段:

数据模型设计方法主要包括**概念模型设计**、**逻辑模型设计**和**物理模型设计**。 数据建模过程中的核心任务包括: 1. 识别实体 2. 定义属性 3. 确定实体之间的关系 设某实体集 $E = \{e_1, e_2, e_3\}$,属性集 $A = \{a_1, a_2, a_3\}$。

后者的价值是直接可用的程度:标题有层级、列表是列表、公式是 LaTeX。前者还得人肉重新整理很久。

5. 真正用得上的调优与避坑清单

组合方案好归好,但不是装上就能顺风顺水。我前后踩了不少坑,挑几个有代表性的写出来,多少能帮你少走弯路。

5.1 引擎切换的版本兼容陷阱

PaddleOCR 迭代非常快,MinerU 内部对接的 PaddleOCR API 未必总是跟最新版兼容。最常见的问题是 PaddleOCR 新版本把某些方法改名或改签名,导致 MinerU 调用时报错。我实际遇到过一次ocr.ocr()的返回结构变化,导致 MinerU 解析中断。

我的处理习惯是安装前先看 MinerU 项目文档里对 PaddleOCR 版本的建议范围,不盲目追最新。如果已经装好新版,建议在虚拟环境里固定大版本:pip install paddleocr==2.x.y,而不是pip install paddleocr直接拉最新。这个看似无关紧要,实际能省掉大量排查时间。

5.2 CPU / GPU 环境的性能平衡

CPU 环境下跑扫描版大文档是一个折磨人的过程。MinerU 本身的版面分析模型加上 PaddleOCR 的检测与识别,一张 A4 扫描页可能要十几秒甚至更久,一本几百页的书能跑到天荒地老。

如果只有 CPU,有两个参数改动最值得:一是把 PaddleOCR 的检测阈值调低一点,检测框能更完整地框住模糊文字;二是关掉 MinerU 里非必要的后处理环节(比如某些图像增强选项),减少不必要的计算。GPU 环境则要注意显存峰值,MinerU 和 PaddleOCR 同时驻留显存时,12GB 以下可能不够用。我测试时 8GB 显存出现过 OOM,后来限制 PaddleOCR 的 batch size、并给 MinerU 单独设置推理设备,才稳定下来。

5.3 中文竖排、繁体与手写批注的特殊处理

标准扫描件还好,一旦遇到竖排中文古籍、繁体混排文本、带手写批注的合同,组合优势会被大幅削弱。竖排文本方面,MinerU 的版面分析模型可能把整片竖排文字切成多个竖条,阅读顺序模型未必能正确合并。PaddleOCR 的lang参数换成chinese_cht可以改善繁体识别,但对竖排的语义理解帮助有限。

我的经验是,遇到这类特殊内容,不要指望开箱即用。可以先用预处理把页面旋转到正、把倾斜矫正,再尝试把竖排区域裁剪成单列后单独喂给 PaddleOCR,最后按坐标手动拼装顺序。这个流程很原始,但对古籍和合同类材料,识别效率和准确度反而比“整页无脑跑”高不少。

5.4 跨页表格的切割与拼接

跨页表格是文档解析的心头大患。MinerU 能识别出每一页上的表格,但跨页之后,它默认是拆成两个独立表格处理的,不会自动合并成同一个。我在解析一份六页财报时,看到第三页末尾的表格被截断,第四页开头又出现一个“表头重复”的新表格。

解决办法是解析完成后做一层后处理:根据表格前后的文本特征(比如“续表”字样、相同的表头结构),把相邻页的表格片段拼接为一个逻辑表格。这个后处理我用简单的规则 + 关键词匹配就能实现,不必上复杂的模型。如果你用大模型做知识库抽取,记住跨页表格在原始 Markdown 里是分开的,喂给抽取模块前建议先合并。

5.5 识别结果的置信度过滤与人工校对节奏

PaddleOCR 的识别结果里有置信度分数,但 MinerU 默认不一定把所有分数都暴露出来。如果你对最终质量有较高要求,比如要入库做检索或直接对外发布,建议单独调用 PaddleOCR 的识别接口,拿回每一行的置信度,低于阈值的行打标记。

我实际操作时的阈值习惯是:识别置信度低于 0.85 的文本行标记为“需人工复核”,低于 0.7 的一律扔进待重识别队列,先做图像增强再试一次。这样做比全部人工校对快非常多,而且能在可接受的时间内把准确率从“大致正确”提升到“基本可用”。

5.6 页眉页脚、页码与脚注的清洗策略

MinerU 能识别页眉页脚,但默认不一定全部移除。我不建议直接删,因为有些文档的页眉里藏着关键信息,比如版本号、章节名。更稳妥的做法是保留在 JSON 结构化结果里,但生成 Markdown 时把它们放到元数据字段,不参与正文。这样知识库检索不会因为页码、页眉的重复出现而污染语义。

有一种处理心得值得单独提一句:凡是做批量解析,不要在解析阶段追求“十全十美”,先用最快速度出结构化结果,再用一套规则把明显的脏数据(像重复页码、页眉、孤立页脚)二次清理。这比重复调参要高效得多,因为真正挡住质量天花板的往往是这些正则就能解决的小问题,而不是模型精度。

6. 这个组合的边界:什么时候不该迷信“王炸”

写到这里,必须泼几盆冷水。MinerU + PaddleOCR 确实很强,但远不是银弹。

先聊适用场景。这个组合最适合的是扫描版或图片型 PDF 的结构化还原,尤其是带表格、公式、多栏排版的学术论文、技术文档、财报、教材。它把“识别”和“排版”两件事拆开,再用一整套管道拼起来,对这种材料的效果是单用任何一方都比不上的。

然后是尽量别硬凑的场景。

  • 纯文本型 PDF:不需要 OCR,MinerU 直接走文本提取路径更快更准。硬上 PaddleOCR 纯粹是浪费时间。
  • 手写文档:PP-OCR 对手写体的识别能力有限,MinerU 的版面分析也解决不了字迹潦草的问题。这类需求还是交给专门的手写识别服务更合适。
  • 高精度古籍整理:需要处理异体字、竖排批注、印章遮挡,当前开源组合只能给出“初步可用”的结果,离出版级要求差很远。
  • 超大文件批量处理:几千页的扫描件跑下来,时间和显存成本都不低。这种场景优先考虑分布式任务拆分,而不是单机硬扛。

备选方案也值得知道。大模型时代,很多团队会把 OCR 结果直接丢给多模态大模型做二次结构化,效果在某些场景确实更好,但成本和稳定性是现实的坎。相比之下,MinerU + PaddleOCR 走的是“确定性解析”路线,结果可预期、可调试、可离线部署,在数据规模大且对可控性要求高的场景里,仍然是我优先推荐的方式。

我现在的处理习惯已经固定下来:第一遍用 MinerU + PaddleOCR 出结构化初稿,第二遍用规则脚本清理页眉页脚、合并跨页表格、过滤低置信度区域,第三遍才考虑要不要上大模型做语义抽取。三步走下来,质量、成本、效率基本都能兼顾。如果你正卡在“OCR 识别率挺高但文档没法用”这个坎上,这个组合值得你认真试试。

相关新闻

大模型工具调用实战:Function Calling与Agent Harness Engineering

大模型工具调用实战:Function Calling与Agent Harness Engineering

上个月我在做一款带工具的对话助手,核心需求是让模型在需要时能调用天气查询、日程管理这类外部能力。最开始建模的时候,我用了最省事的方案:在系统提示词里把JSON格式写得明明白白,让模型自己输出动作和参数,然后在代…

2026/10/20 3:21:02 阅读更多 →
深度学习分批训练实战:batch_size、DataLoader与显存优化全解析

深度学习分批训练实战:batch_size、DataLoader与显存优化全解析

第一次用 Python 训练一个真正“大数据集”的时候,我以为把几十万条样本一次性加载进内存是天经地义的事。结果程序跑了十几分钟,内存占用一路飙升,最后直接在终端里吐出一串 MemoryError,整个进程当场没了。后来我才意识到&#…

2026/10/20 3:21:02 阅读更多 →
Spring Boot高校学科竞赛平台开发实战

Spring Boot高校学科竞赛平台开发实战

1. 项目拆解:高校学科竞赛平台到底在解决什么问题做这个项目之前,我其实先观察了一个很现实的现象:很多高校的学科竞赛管理还停留在“Excel登记 群公告通知 人工统计”的阶段。学生要找到适合自己的竞赛项目,得反复翻通知群&…

2026/10/20 3:21:02 阅读更多 →

最新新闻

文件夹.EXE病毒专杀工具:Windows资源管理器劫持急救方案

文件夹.EXE病毒专杀工具:Windows资源管理器劫持急救方案

简介:这是一款专为清除“文件夹.EXE”类伪装型病毒设计的轻量级杀毒工具,面向普通电脑用户及初级系统维护人员,解决因误点伪装文件夹导致的恶意代码执行、文件隐藏、系统异常等典型感染问题。压缩包共4个文件(443KB)&a…

2026/10/20 10:23:05 阅读更多 →
300W人脸关键点数据集整理包:开箱即用的COCO-Keypoints工程资产

300W人脸关键点数据集整理包:开箱即用的COCO-Keypoints工程资产

简介:本资源是面向计算机视觉研究者与深度学习工程师的300W人脸关键点数据集整理包,专为面部对齐、关键点检测及人脸几何建模等任务提供高质量训练基础。资源包含2个核心NumPy数据文件(facial_image.npy与facial_keypoints.npy)&a…

2026/10/20 10:23:05 阅读更多 →
微博热搜爬虫实战:requests直取JSON+Excel结构化落盘

微博热搜爬虫实战:requests直取JSON+Excel结构化落盘

简介:本资源是一份面向Python初学者与数据采集实践者的轻量级微博热搜爬虫实战项目,聚焦社交媒体热门话题的自动化抓取与结构化存储。项目使用requestsBeautifulSoup实现网页请求与HTML解析,提取微博TOP50热搜标题及链接,并通过pa…

2026/10/20 10:23:05 阅读更多 →
高并发发卡系统设计:券码生成、库存扣减与核销闭环

高并发发卡系统设计:券码生成、库存扣减与核销闭环

简介:这是一套面向电商运营者与PHP开发者的一站式发卡平台源码,聚焦团购营销与虚拟商品二级交易场景,解决传统发卡系统缺乏用户自流转、活动运营弱、资金监管缺位等痛点。资源共2000个文件,主体为507个PHP后端逻辑文件、304个HTML…

2026/10/20 10:23:05 阅读更多 →
WinForm自绘登录窗体实战:无边框圆角UI与自绘控件实现解析

WinForm自绘登录窗体实战:无边框圆角UI与自绘控件实现解析

简介:C#登录窗体完整示例包,面向WinForms桌面应用初学者及中级开发者,可用于课程设计、项目原型或界面参考,集中演示了如何构建外观出众且具备完整交互逻辑的登录模块。压缩包为RAR格式,共70个文件,大小约5…

2026/10/20 10:23:05 阅读更多 →
ROS2+Autoware实车部署:跨越仿真与物理世界的三堵墙

ROS2+Autoware实车部署:跨越仿真与物理世界的三堵墙

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:22:04 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →