表格OCR与普通OCR的核心差异:从结构识别到单元格重建的实战解析
我最早意识到表格OCR和普通OCR不是一回事是在一次处理发票扫描件的项目里。当时同一个OCR引擎应付普通文章段落识别得挺好可一旦丢来一张报销明细表输出的就是一大堆上下错位的文本金额、日期、项目名全挤在一起。后来翻了开源代码和论文才确认表格识别必须走专用的结构和算法单纯把普通OCR的结果按坐标排序是救不回来的。这篇内容我会从原理层讲到落地层把表格OCR和普通OCR的核心差异拆开揉碎覆盖表格检测、结构解析、单元格重建、无边框表识别等关键点也会给出可直接参考的流水线设计和问题排查经验。比较适合正在做票据结构化、文档解析、数据抽取的同学以及想搞清楚“为什么我直接调普通OCR识别表格总是乱”的开发者。1. 普通OCR到底哪里不够用1.1 它只能回答“字是什么”回答不了“字在哪儿”普通OCR的完整链路大致是图像预处理、文字区域检测、字符或单词识别、语言模型纠错、输出纯文本。这个过程本质上是“把图像里的文字符号转成字符串”。它关心的是字形、语义、词序不关心这些文字在版面里属于第几行第几列也不关心哪些文字属于同一个单元格。你可以把普通OCR理解成一个视力很好但完全不懂排版的人。他拿到一张表格能一个一个把字念出来甚至念得很快但你问他“金额这一列第三行的数字是哪个”他就懵了。因为他看到的是连续的文字流不是“第2行第3列”的位置坐标。所以当表格图片丢给普通OCR时最典型的输出是表格内容按从上到下、从左到右的顺序被拉成一长串。看似每个字都认识但行与行之间的对应关系、字段与值之间的匹配关系全部丢光。比如“商品名称苹果 数量3 单价5 金额15”这行内容在没有单元格边界约束的情况下下一行也可能同样被摊平连在一起以后根本分不清哪个数值属于哪个字段。1.2 光靠“按坐标排序”整理表格为什么行不通有人会说那普通OCR不是能返回每个文本框的坐标吗我按横坐标和纵坐标排序把相近的行归到一起不就能重构表格了这个思路听起来可行但实际操作中坑很多。一方面普通OCR的文字框检测是按文本块划分的同一行里多个单元格的词可能被合并成一个大的检测框也可能一个单元格被拆成好几个框。检测框一旦与真实单元格边界不对齐后面的按坐标聚类就全乱了。另一方面表格里经常有跨列单元格、合并单元格、空单元格这些结构在坐标系里没有一个稳定的规律可循。比如某行只有一个“备注”字段它横向跨了三列如果只按坐标排序这一行的“列对齐”就会和其他行完全对不上。我在实际项目里见过最典型的错误是普通OCR把表头识别出来以后再按坐标分列结果把“日期”这一列的内容和“金额”这一列的内容错位拼接到了一起。文字全对但表格语义彻底错了。这种错比识别出几个错字更严重因为错字还能靠人工校对发现行列错位后整张表的所有数据都不可信了。2. 表格OCR的三个技术分水岭2.1 从“识别文本”变成“识别结构”表格专用算法和普通OCR最本质的区别是前者把“结构”当成了核心目标。普通OCR的目标函数是字符正确率而表格识别模型的目标是先搞清楚表有多少行、多少列、哪些单元格被合并、哪些单元格跨行跨列然后再去识别每个单元格里的文字。这一步在行业里常被称为表格结构识别。它输出的是一个描述表格拓扑关系的中间结果而不是一串文本。这个中间结果可以是一张行列划分图也可以是一个带有合并关系的二维网格还可以是类似HTML Table结构的分层描述。只有拿到了这个中间结果后续的文字识别才有意义——因为每个文字块都被归属到了具体的单元格坐标里。我习惯用一个比喻普通OCR是把墙上的字抄下来表格OCR是把户型图画出来再往每个房间里放家具。家具放得对不对前提是户型图得正确。2.2 从“线性文本流”变成“树形层级”普通OCR输出的是一维的、线性的文本流。即使带坐标本质上仍然是一堆平面散点。表格则天然是二维结构而且不一定是规则的二维网格。比如会计台账里常出现三层表头一级表头是“2024年度收支”下面分成“收入”和“支出”两列“收入”下面又分成“工资性收入”“经营性收入”两个子列。这种嵌套关系如果用“第几行第几列”的平铺网格来描述会很别扭更好的表达方式是用树形层级或带合并单元格的表格模型。这个差异直接决定了后续数据抽取的方式。从线性文本流里抽“工资性收入”的数值需要靠字符串匹配和上下文猜从树形表格结构里取则可以直接沿着“表头节点→子节点→对应数据行”的路径精确定位。2.3 从“文本正确”变成“关系正确”第三个分水岭在于评价指标。普通OCR评价的是字符准确率而表格识别必须评价“关系正确率”单元格之间的行关系、列关系是否成立表头与数据是否对应合并单元格是否还原完整。这个区别在实践里非常明显。我曾经拿一批财务报销单做过对比测试普通OCR在金额数字上的识别准确率其实并不低能到99%左右但把整张表还原成结构化数据后因为行列错位、字段漂移造成的“数据关联错误”占比却接近10%。换用表格专用算法后字符准确率可能没有明显提升但结构化后的整体可用率大幅上升。所以如果你做的是证件照、段落文本、名片这类场景普通OCR完全够用一旦涉及报表、发票、单据、实验记录这些需要“按行按列读取”的场景就必须把结构识别放在第一位单纯追单个字符的准确率没有意义。3. 专用表格算法是怎么工作的3.1 表格检测先用目标检测的思路找“表格在哪”表格识别不能对整页图像从头到尾直接硬解第一步通常是从版面里把表格区域找出来。这一步和普通OCR里的文字区域检测思路相近但更关注表格的边界和整体位置。常用的做法有两种。一种是基于传统图像处理的线检测先用边缘检测、二值化、形态学操作把横线和竖线提取出来再通过直线的交点和闭合区域定位表格边界。这种方式在扫描清晰的“有线表”上很快但对拍摄角度、光照不均、表格线断裂非常敏感。另一种是基于深度学习的表格检测模型本质上就是目标检测或语义分割模型输出表格区域的外接框或像素级掩码。和普通OCR的文本检测相比表格检测模型需要更大的感受野因为表格往往横跨大半张纸线条和文字交织在一起如果只看局部小块很难判断哪些文字属于同一个表格。在实际流程里建议把表格检测和普通文本检测并列进行。表格区域交给结构解析模块表格外部的标题、备注、签名则走普通OCR。很多项目一开始想省事只用普通OCR的版面分析去框表格区域效果往往不理想因为通用版面分析对“表格块”的召回率不如专门的表格检测模型。3.2 表格线提取与单元格重建拿到表格区域之后第二个关键步骤是提取表格线、重建单元格。对有边框的表格经典的实现路径是这样的先对表格区域做二值化让深色线条和浅色背景彻底分离然后用形态学操作分别提取横线和竖线。具体做法是用一个横向的长条形核做开运算把竖直部分滤掉剩下横线再换一个竖向的长条形核提取竖线。把横线图和竖线图叠加就能得到线的交叉点再根据交叉点之间的连线把表格切分成一个个矩形单元格。这个流程听起来简单但实际工程里需要处理一堆边缘情况。比如表格线不是严格的直线扫描件里会带轻微弯曲比如表头区域有多层合并线条不完全贯穿整行比如有的单元格边框不是闭合的只在两侧有线。这些问题都会让“求交点、连线段”的朴素方法失效。更现代的做法是用深度学习直接预测单元格边界。模型对表格区域做像素级分类输出的每个像素被标记为“水平线”“竖直线”“单元格内部”或者“背景”然后从预测结果里重建出单元格划分关系。这种方法的优势是抗干扰能力强能处理线断裂和部分遮挡缺点是对训练数据要求高遇到训练集里没见过的特殊版式时表现也可能不稳定。无论用哪种方法单元格重建后的结果一定需要保留“合并关系”。简单矩形网格不能表达跨行跨列所以中间格式里至少要有每个单元格的左上角和右下角坐标以及它跨越的行列范围。3.3 无边框表格没有线也需要结构很多实际表格根本没有线。比如从PDF导出的银行流水视觉上有清晰的列但没有画网格线再比如网页截图里的表格列与列之间全靠空白隔开。这种表格对普通OCR来说反而比有线表更友好——因为不需要处理线干扰但对表格专用算法来说结构解析难度反而更大。无边框表格的结构重建主要靠两种线索。第一种是文字对齐线索同一列的文字通常会在垂直方向上呈现平齐的边数字类内容往往右对齐文本类内容往往左对齐根据这些对齐关系可以推断出列边界。第二种是空白间隙线索同一行的不同单元格之间会有相对明显的水平空白带不同行之间则有垂直空白带。把这些空白带叠加起来就能得到一个大致的网格划分。我处理无边框表时常用的技巧是把OCR识别出的每个文本行先按纵向聚类形成“伪行”再在每个伪行内部根据字符间距和左边界对齐关系切分“伪列”。整个过程有点像用空白区域反过来画格子。这个方法在干净的无边框表上效果不错但遇到内容长短差异极大、单元格内容换行、数字和单位混排的情况就需要加入启发式规则反复调整。4. 一套可落地的表格识别流水线4.1 预处理阶段先让表格线“显形”表格识别里最容易被低估的就是预处理。很多人把图片直接丢进识别模型结果表格线断的断、歪的歪输出结果一团糟。预处理做得好后面的结构解析能省一半力气。我的建议流程是第一步做透视校正。拍照得到的表格经常有轻微透视变形用图像边缘检测找到最外层的四条表格边界然后做透视变换把表格拉正为一个矩形。第二步做倾斜校正。表格线方向会和水平方向有微小夹角倾斜角度哪怕只有两三度也会让后面提取横线时出现大量短线段导致结构重建失败。第三步做线增强。用形态学闭运算把表格线的断口接起来再用自适应阈值二值化把线从背景里分离出来。这里有一个优先级判断如果整个表格区域已经比较清晰就不要过度中值滤波或高斯模糊否则会把细表格线也抹掉。我见过不少项目因为预处理过度把表格线条连续性和文字边缘都破坏了识别率反而断崖式下降。预处理的目标是“适度增强”不是“让画面变干净”。4.2 结构解析单元格划分是核心一步当预处理结束表格区域被定位之后接下来就是把整个表格区域切割成单元格集合。这个阶段输出的不是图像而是一个结构描述包括每个单元格的位置、行列号、是否跨行跨列。在实现上我比较推荐把结构解析和文字识别分开做而不是用一个端到端模型同时输出文字和结构。原因是分开做可以分别调参结构错了就修结构文字错了就修文字端到端模型虽然看起来省事但一旦两种错误耦合在一起排查起来极痛苦。结构解析的结果建议输出成两层表示底层是每个单元格的精确边界框可能用(x1, y1, x2, y2)表示上层是一个行列索引网格标明第几行第几列并带有rowspan和colspan信息。底层的边界框用来给文字识别模型裁剪图像上层的索引网格用来最后拼装输出表格。4.3 文字识别与后处理把文字填回格子单元格划分完之后每个单元格里的文字识别其实是可以复用普通OCR能力的。这一步的本质是用结构解析得到的坐标信息把大表格切成许多小块再对每个小块单独识别。因为切块之后背景干净、内容单一普通OCR的准确率也会明显提升。后处理阶段需要注意三点第一表头文字容易出现“斜体”“加粗”“带下划线”等样式变化某些OCR模型在识别艺术字和装饰性文字时准确率会下降需要额外增强样本第二数字内容要做规则校验比如金额字段必须保留两位小数日期字段必须符合日期格式如果有明显格式异常就要标记成可疑字段第三空白单元格不能直接丢弃要保留单元格的位置否则输出表格的列对齐会被破坏。最终输出格式我倾向于CSV和JSON各做一份。CSV方便人直接看和处理JSON方便程序读取并保留合并单元格等复杂结构。这里有个容易被忽略的点CSV本身不支持表达跨行跨列所以如果表格里有大量合并单元格导出CSV时要在对应位置重复填充内容或留空占位这需要在导出逻辑里单独处理。5. 常见问题与排查心得5.1 表格线断裂、太浅结构总是重建失败这是有线表格识别最普遍的故障。出现这种情况先不要急着换算法先检查预处理环节。扫描件里的表格线常见问题是断断续续尤其是用手机拍摄时反光和阴影会让部分线段变成浅灰色甚至消失。此时可以先做一个形态学闭运算把断口接上如果线条太细可以先用膨胀操作把线变粗再做闭运算。如果形态学操作之后仍然断线就要考虑是线检测算法的阈值选得不对。二值化的阈值如果太高浅色线条会被当成背景阈值太低阴影和脏点会被当成线条。我的习惯是先统计表格区域的像素灰度分布再用自适应阈值同时保留多组二值化结果让结构解析模型自己选择最可信的组合。5.2 合并单元格、斜线表头怎么处理合并单元格会让行列索引变得不规则斜线表头更是几乎所有表格识别算法的噩梦。普通的有线表检测算法会在线条交叉点处直接切格遇到斜线根本处理不来遇到跨行跨列时简单切分又会把应该属于同一个单元格的内容拆到多个格子。我的处理办法是结构解析环节不要只输出均匀网格要允许相邻单元格合并。具体实现里可以先把所有线段交点找出来生成基础网格再用一个分类模型判断每对相邻网格之间是否存在实际分隔线如果没有分隔线就判定为合并单元格。斜线表头则单独做特殊规则检测检测到斜线时把表头区域单独截出来用普通OCR识别斜线两侧的文字再手工映射到对应的行列位置。5.3 印章、手写和噪点干扰严重业务单据最麻烦的干扰源是红色印章、手写签字和二维码。印章会盖住表格线和文字手写笔迹会和打印体混在一起二维码区域则可能被误识别成表格内容的一部分。针对印章可以在彩色图像里用颜色通道过滤把红色分量单独提取出来在结构解析时把红色区域视为背景。针对手写如果业务上需要保留手写内容就不要做抑制而是把单元格裁剪后单独训练手写识别模型如果不需要就在预处理时按颜色或纹理过滤掉。针对二维码建议在表格检测之前先做一次二维码定位把检测到的码区域从表格区域内挖掉避免后续单元格分割被干扰。6. 从扫描件到结构化数据一个最小可复现的流程6.1 流程设计如果你现在手头有一张表格图片想快速搭一个可用的识别流程我建议按以下顺序走图像输入后先做透视校正和倾斜校正目标是把表格区域的四条边拉成横平竖直。用表格检测模型定位表格区域的边界框。如果项目预算和时间有限也可以用传统图像处理方式找外围线框但鲁棒性会差一些。对表格区域做线提取和单元格重建输出带边界框的单元格列表。裁剪每个单元格依次送入普通OCR识别文字。根据表格结构描述把单元格文字填回到行列索引网格里导出CSV和JSON。这套流程最耗时的地方在于第一步到第三步的调试。表格线检测的参数、单元格合并的判断逻辑、无边框表的列切分规则都需要针对你手头数据的版式做迭代。不要在前期追求一个万能的模型先把具体场景跑通再逐步扩大版式覆盖范围。6.2 几个容易忽略的细节在真正落地时有几个细节不处理会让你后面很痛苦。第一输出表格前一定要保留原始图像的坐标映射关系因为后续如果要把结构化结果与原始表格可视化对照坐标信息能帮你快速定位问题格子。第二逻辑空行要保留。有些表格中间有空行OCR和结构重建时如果直接把空行删掉后续行号全部错位。第三长表格分页问题。表格跨页时每页可能会有不同的表头合并输出时需要用规则把各页的“表头区”识别出来并在最终结果里统一表头结构。我还建议在流程里加入一个前置校验模块如果识别出的是CSV结构先检查每一行列数是否一致列数不一致的行直接标红。这个简单的规则能筛掉大量结构重建错误比任何模型调优都划算。7. 最后说点实操体会我踩过最大的坑是早期总想用普通OCR加坐标排序来解决表格问题觉得可以省掉一个模型。结果每次换一批扫描件排版一变规则就要跟着改最后维护成本比直接上专用表格识别算法还高。现在我的原则很简单只要是表格类文档结构解析就必须独立出来做不能依赖普通OCR顺带输出。另外一个经验是表格识别的质量评估一定要看最终结构化结果而不是看单字准确率。我会抽样一批图片跑完整个流程后逐行检查行列对应关系、合并单元格还原情况和空单元格保留情况用这些指标来衡量模型和参数改动的效果。单字准确率再高结构化后数据不能用等于零。如果你正准备做表格识别建议先把“有边框表格”这一个场景做扎实再考虑无边框和多页合并。先把最难的流程跑通一次后面加版式就是增量工作不要一上来就追求全场景覆盖。

相关新闻

WSA系列API函数详解:Windows网络编程从入门到实践

WSA系列API函数详解:Windows网络编程从入门到实践

1. WSA系列API函数到底解决什么问题第一次接触WSA系列API函数,是在一个跨平台网络工具的开发项目里。当时团队需要把一套原本跑在Linux上的网络通信模块迁移到Windows环境,原本以为改改头文件、换几个函数名就能搞定,结果编译直接报了几百个错…

2026/10/18 5:31:41 阅读更多 →
(论文速读)RT-DETRv4:借助视觉基础模型,无额外推理开销地提升实时目标检测

(论文速读)RT-DETRv4:借助视觉基础模型,无额外推理开销地提升实时目标检测

论文题目: RT-DETRv4: Painlessly Furthering Real-Time Object Detection with Vision Foundation Models(RT-DETRv4:利用视觉基础模型,无痛地进一步提升实时目标检测) 论文版本: arXiv:2510.25257v2&…

2026/10/18 5:31:41 阅读更多 →
现代C++进阶实战:移动语义、智能指针与零成本抽象

现代C++进阶实战:移动语义、智能指针与零成本抽象

从手写new/delete到完全依赖 RAII,从到处拷贝到熟练使用移动语义,这个过程几乎每个 C 开发者都会经历。这一部是《C 小程序编写系列》的收官之作,我不想再堆砌某个具体特性的语法细节,而是想把“现代 C 进阶实战——从灵活到高效”…

2026/10/18 5:31:41 阅读更多 →

最新新闻

向量、矩阵与张量入门:掌握数据维度与形状操作的核心概念

向量、矩阵与张量入门:掌握数据维度与形状操作的核心概念

1. 为什么矩阵、向量这些概念值得认真对待很多朋友一看到“向量”“张量”这几个词,第一反应是“这不是数学课上的东西吗,跟我有什么关系”。说实话,我以前也这么想,直到有一次需要处理一批表格数据,要把几十个维度的特…

2026/10/18 6:19:49 阅读更多 →
盲水印技术实战:基于Python的DCT与LSB图像版权保护方案

盲水印技术实战:基于Python的DCT与LSB图像版权保护方案

1. 项目概述与技术路线选型1.1 你看到的“看不见”的水印是什么盲水印,英文叫Blind Watermark,核心特征就是“嵌入方不需要原始载体图像就能提取水印”。这和传统可见水印完全不同——可见水印是直接把Logo怼在图上,虽然声明了版权&#xff0…

2026/10/18 6:19:49 阅读更多 →
2026研究生AI论文工具深度测评:9款工具选型与避坑指南

2026研究生AI论文工具深度测评:9款工具选型与避坑指南

研究生写论文,最折磨人的往往不是“写不出来”,而是文献看不完、逻辑理不清、格式调不对。这两年AI论文网站扎堆出现,很多同学收藏了十几个号称“必备神器”的链接,真正用起来却发现有的只会生成车轱辘话,有的引用的文…

2026/10/18 6:19:49 阅读更多 →
三语言实现WebSocket实时推送Demo

三语言实现WebSocket实时推送Demo

1. 写在前面做后端开发的朋友应该都有过这样的经历:页面上的数据要实时刷新,轮询太浪费资源,长连接又不好维护。后来接触了 WebSocket,才发现这东西确实好用。今天不聊太深的理论,就从一个实际的小需求出发&#xff0c…

2026/10/18 6:19:49 阅读更多 →
Rust异步内存泄漏检测工具RTK原理与实战

Rust异步内存泄漏检测工具RTK原理与实战

1. RTK(Rust Token Killer)到底是什么?别被名字吓住,它其实是个“内存泄漏显微镜”刚看到“Rust Token Killer”这个名字,我第一反应是:又一个带“Killer”的硬核工具?是不是要干掉什么底层机制…

2026/10/18 6:19:49 阅读更多 →
Selenium八大定位器与显式等待:从原理到实战的稳定自动化方案

Selenium八大定位器与显式等待:从原理到实战的稳定自动化方案

做Web自动化这几年,前前后后看过不少脚本,也帮团队整理过很多次用例。问得最多、踩坑最深的往往不在框架选型上,而在最基础的两件事:元素定位和等待策略。什么八大定位器、显式等待,概念大家都会背,一上手就…

2026/10/18 6:18:49 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →