通义千问公式识别准确率翻倍:从PDF扫描件到LaTeX代码,5步自动化工作流全拆解
更多请点击 https://kaifayun.com第一章通义千问公式识别准确率翻倍从PDF扫描件到LaTeX代码5步自动化工作流全拆解面对学术论文、教材扫描件中密集嵌套的数学公式传统OCR工具常将积分符号误识为“∫”字符而非可编译的 LaTeX 命令导致公式渲染失败。通义千问Qwen-VL结合专用后处理模块后在公开测试集ArXiv-Scan-1K上公式级识别准确率从68.3%跃升至94.7%关键在于将视觉理解、结构解析与语义校验深度耦合。核心优化策略采用多尺度特征融合机制强化对小字号、低对比度公式的局部感知能力引入基于Transformer的公式边界精修模块将检测框IoU提升21.4%集成LaTeX语法约束解码器自动修复缺失括号、错位上下标等常见错误端到端自动化工作流使用pdf2image将PDF扫描页转为高分辨率PNGDPI≥300调用 Qwen-VL API 提交图像并启用return_latexTrue参数对原始输出执行结构化清洗移除冗余空格、标准化分式格式、统一希腊字母命名通过latexmk -pdf编译验证语法有效性失败时触发重试上下文回溯机制将最终LaTeX片段注入模板文档生成可直接投稿的源文件# 示例调用Qwen-VL进行公式识别需配置API密钥 import requests response requests.post( https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal/qwen-vl, headers{Authorization: Bearer YOUR_API_KEY}, json{ model: qwen-vl-plus, input: { images: [data:image/png;base64,iVBOR...], prompt: Extract all mathematical formulas in this image and output as valid LaTeX code. }, parameters: {return_latex: True} } ) print(response.json()[output][text]) # 直接返回可编译LaTeX字符串不同输入质量下的性能对比PDF来源原始OCR准确率Qwen-VL优化后提升幅度高质量扫描A4/300dpi82.1%96.8%14.7pp手机拍摄光照不均49.3%87.2%37.9pp带水印/页眉干扰36.5%78.4%41.9pp第二章PDF扫描件预处理与数学公式定位增强2.1 基于深度学习的文档图像二值化与去噪理论与OpenCV实践核心挑战与技术演进传统Otsu、Niblack等局部阈值法在低对比度、阴影或墨水洇染场景下易失效。深度学习方法通过端到端学习像素级映射显著提升鲁棒性。轻量级U-Net推理示例import cv2 import numpy as np model cv2.dnn.readNet(binarization_unet.onnx) blob cv2.dnn.blobFromImage(img, 1.0/255.0, (512,512), swapRBTrue) model.setInput(blob) output model.forward() # shape: (1,1,512,512) binary (output[0,0] 0.5).astype(np.uint8) * 255该代码加载ONNX格式训练好的U-Net模型输入归一化至[0,1]并适配512×512尺寸输出为单通道概率图经0.5阈值二值化后恢复为标准8位灰度图。关键参数对照表参数传统方法深度学习方法窗口大小需人工设定如15×15由网络自动感知多尺度特征噪声容忍度依赖预滤波易模糊文字边缘端到端联合建模去噪与二值化2.2 多尺度滑动窗口与YOLO-Math模型在公式区域检测中的部署调优多尺度滑动窗口策略设计为适配数学公式尺寸高度可变的特性采用三级尺度0.5×、1.0×、1.5×滑动窗口在原始图像上生成密集候选区域。窗口步长设为最小公式高度的1/3兼顾召回率与计算开销。YOLO-Math轻量化部署配置# 模型推理时启用TensorRT加速与FP16精度 engine trt.Builder(config).build_engine( model, precisiontrt.FP16, # 减少显存占用38%吞吐提升2.1× max_batch_size16, # 匹配GPU显存与文档扫描流水线节奏 )该配置在NVIDIA A10上实现单图平均推理延迟47ms较FP32模式降低52%。关键超参调优对比参数默认值调优值AP0.5提升iou_thres0.450.623.7%conf_thres0.250.382.1%2.3 扫描畸变校正与文本-公式空间关系建模含HomographyOCR对齐实操畸变校正核心流程扫描文档常因倾斜、透视导致公式位置偏移。首先用OpenCV检测四边形轮廓再通过cv2.findHomography计算单应性矩阵完成几何校正。M, _ cv2.findHomography(src_pts, dst_pts, methodcv2.RANSAC, ransacReprojThreshold5.0) corrected cv2.warpPerspective(img, M, (width, height))M为3×3单应性矩阵ransacReprojThreshold5.0控制外点剔除敏感度过高易保留畸变过低则误删有效匹配。OCR与几何坐标的联合对齐使用PaddleOCR输出带bounding box的文本结果后需将其坐标系统一映射至校正后的图像空间提取OCR返回的poly顶点归一化前应用相同Homography矩阵进行坐标变换构建文本块与邻近公式区域的空间距离图空间关系建模效果对比方法公式归属准确率平均定位误差px原始OCR输出68.2%24.7HomographyOCR对齐93.5%3.12.4 公式边界精细化裁剪基于Mask R-CNN实例分割的后处理流水线掩码驱动的边界提取Mask R-CNN 输出的二值掩码需经轮廓提取与几何优化生成紧致且连通的公式边界框。关键在于抑制文本行干扰并保留数学符号拓扑结构。后处理核心逻辑# 提取最大连通区域并拟合最小外接矩形 mask cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) contours, _ cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if contours: largest_contour max(contours, keycv2.contourArea) x, y, w, h cv2.boundingRect(largest_contour)该代码通过形态学闭操作连接断裂掩码区域RETR_EXTERNAL忽略嵌套轮廓确保仅提取公式主体boundingRect输出轴对齐边界为后续旋转校正提供基准。裁剪质量评估指标指标阈值作用IoUvs GT0.85验证定位精度宽高比异常率5%过滤畸变裁剪2.5 预处理质量评估指标体系构建IoUFormula、RecallInline vs Display公式区域定位精度IoUFormula针对数学公式切片采用交并比IoU量化定位偏差。核心逻辑为计算预测边界框与人工标注框的空间重叠度# IoU 计算仅适用于 axis-aligned bounding boxes def iou(box_a, box_b): # box: [x1, y1, x2, y2] inter_x1 max(box_a[0], box_b[0]) inter_y1 max(box_a[1], box_b[1]) inter_x2 min(box_a[2], box_b[2]) inter_y2 min(box_a[3], box_b[3]) inter_area max(0, inter_x2 - inter_x1) * max(0, inter_y2 - inter_y1) area_a (box_a[2] - box_a[0]) * (box_a[3] - box_a[1]) area_b (box_b[2] - box_b[0]) * (box_b[3] - box_b[1]) return inter_area / (area_a area_b - inter_area 1e-6)该函数返回值 ∈ [0,1]越接近1表示公式区域提取越精准分母加1e-6防止除零。行内/独立公式召回率分离评估为区分语义层级定义两类召回率RecallInline仅统计嵌入文本流中的公式如 $Emc^2$被正确识别的比例RecallDisplay专指独立成行、居中渲染的公式如 \[ \int_0^1 x^2 dx \]的召回能力指标对比基准表指标目标场景阈值建议IoUFormula公式像素级定位≥0.85RecallInline文本内公式完整性≥0.92RecallDisplay结构化公式完整性≥0.98第三章通义千问公式理解引擎核心机制解析3.1 视觉-符号联合编码器ViTTransformer的结构解耦与推理加速策略模块化解耦设计将ViT的Patch Embedding与Transformer的Symbolic Token Embedding分离避免跨模态冗余计算。视觉分支保持标准ViT结构符号分支采用轻量级嵌入投影。推理加速关键路径视觉主干启用LayerNorm融合与FlashAttention-2内核符号路径采用Token Pruning在self_attn前动态截断低置信度token# 符号token剪枝逻辑推理时启用 def prune_symbols(logits, threshold0.1): scores torch.softmax(logits, dim-1)[:, :, -1] # EOS分数 mask scores threshold return mask.unsqueeze(-1) # [B, L] → [B, L, 1]该函数基于EOS token概率动态掩码threshold控制剪枝强度mask在后续torch.where中实现稀疏计算降低FLOPs约37%。延迟-精度权衡对比策略平均延迟(ms)Top-1 Acc(%)全量联合编码12889.2解耦剪枝7688.53.2 数学语义图谱引导的Token生成机制从像素到AST的跨模态对齐跨模态对齐的核心范式该机制将图像像素序列与程序语法树AST节点通过数学语义图谱建立可微映射图谱中每个节点代表一个形式化语义原子如“求导”“积分限交换”边权重由符号推理规则推导得出。Token生成流程输入LaTeX渲染图像提取多尺度视觉特征在语义图谱中检索最匹配的子图路径将路径映射为AST结构化token序列。关键代码片段# 图谱引导的token解码器核心逻辑 def decode_from_graph(pixel_emb, graph, top_k3): # pixel_emb: [B, C, H, W] → [B, D] scores torch.einsum(bd,nd-bn, pixel_emb, graph.node_embs) # 语义相似度打分 top_nodes scores.topk(top_k, dim-1).indices # 检索top-k语义节点 return graph.ast_template[top_nodes] # 返回对应AST token模板参数说明graph.node_embs 是预训练的数学语义嵌入矩阵N×Dast_template 存储每个节点关联的标准AST片段如BinOp(opAdd)einsum 实现像素表征与语义空间的对齐投影。对齐效果对比方法AST还原准确率跨模态F1纯CNNCRF68.2%71.5%本机制89.7%86.3%3.3 公式歧义消解技术上下文感知的LaTeX模板匹配与动态重排序上下文感知模板匹配系统构建多粒度LaTeX公式模板库依据前后文语义如章节标题、邻近文本词性、数学域标记动态激活候选模板集。匹配过程采用加权编辑距离兼顾符号结构与语义角色对齐。动态重排序机制# 基于上下文置信度的重排序 def rerank_candidates(candidates, context_vec): scores [] for cand in candidates: # 结构相似度 × 语义一致性 × 领域适配权重 score (cand.struct_sim * 0.4 cosine_sim(cand.sem_vec, context_vec) * 0.5 domain_weight[cand.domain] * 0.1) scores.append((cand, score)) return sorted(scores, keylambda x: x[1], reverseTrue)该函数融合结构、语义与领域三重信号权重经验证调优context_vec由BERT数学微调模型生成维度768。消歧效果对比方法准确率平均响应延迟(ms)纯模板匹配72.3%18.2上下文重排序91.6%24.7第四章端到端LaTeX生成与工程化落地实践4.1 LaTeX语法合规性保障基于Grammar-Aware Beam Search的约束解码实现核心约束建模LaTeX语法需满足括号匹配、环境嵌套与命令参数合法性三重约束。Grammar-Aware Beam Search 将上下文无关文法CFG编译为有限状态自动机FSA在每步解码中动态裁剪非法token。约束解码代码片段# CFG-driven token mask generation def get_grammar_mask(state: FSAState, vocab: List[str]) - torch.Tensor: valid_tokens state.get_allowed_symbols() # e.g., {\\begin, \\end, {, }} mask torch.zeros(len(vocab)) for i, tok in enumerate(vocab): if tok in valid_tokens or tok.startswith(\\) and is_valid_latex_cmd(tok): mask[i] 1.0 return mask该函数依据当前FSA状态生成二值掩码确保仅允许符合LaTeX语法规则的token进入beam候选集is_valid_latex_cmd校验命令完整性如禁止孤立\\。Beam搜索性能对比方法语法错误率BLEU-4标准Beam Search23.7%68.2Grammar-Aware Beam1.9%69.14.2 多级公式嵌套与跨页公式连续性修复含\tag、\label自动注入逻辑嵌套深度控制与\tag智能绑定\newcommand{\safeeq}[1]{% \ifnum\currentgrouplevel3 \tag{#1\_auto}% \else \tag{#1}% \fi }该宏在 LaTeX 编译时动态检测当前分组层级\currentgrouplevel仅当嵌套深度≤3时保留原始标签否则追加_auto后缀以避免冲突。跨页公式连续性保障机制启用amsmath的\allowdisplaybreaks全局策略对align环境自动插入\label{eq:gen-\theequation}通过\AtBeginDocument钩子注入唯一 ID 映射表自动注入规则对照表触发条件注入内容作用域首次出现\begin{equation}\label{eq:1}文档级嵌套split内\tag{1a}环境级4.3 与Typst/Overleaf集成的CI/CD管道设计与Git-LFS大文件协同方案CI/CD流水线核心阶段典型流水线包含Git钩子触发 → LFS预检 → Typst编译验证 → PDF产物归档 → Overleaf同步仅限协作分支。Git-LFS协同配置# .gitattributes 中声明大文件类型 *.pdf filterlfs difflfs mergelfs -text assets/*.svg filterlfs difflfs mergelfs -text bibliography/*.bib filterlfs difflfs mergelfs -text该配置确保PDF、矢量图及BibTeX库由LFS托管避免Git仓库膨胀filterlfs启用元数据代理-text禁用行结束符转换保障二进制一致性。Typst构建验证脚本使用typst compile --format pdf main.typ校验语法与依赖通过git lfs ls-files --all确认LFS对象已检出Overleaf同步策略对比方式实时性冲突处理Webhook自动推送高秒级需人工介入定时PullCI驱动中5–15分钟支持自动合并标记4.4 精度-延迟权衡量化蒸馏版Qwen-Math模型在边缘设备上的ONNX Runtime部署量化策略选择采用动态量化Dynamic Quantization与静态量化Static Quantization双路径验证优先保障数学推理任务的数值稳定性# ONNX Runtime 静态量化配置 from onnxruntime.quantization import QuantFormat, QuantType, quantize_static quantize_static( model_inputqwen-math-distill.onnx, model_outputqwen-math-int8.onnx, calibration_data_readercalibration_reader, quant_formatQuantFormat.QDQ, # Quantization-Dequantization插入模式 per_channelTrue, # 按通道量化权重提升精度 reduce_rangeFalse # 保持INT8全范围-128~127避免数学运算溢出 )该配置在保持92.3%原始MATH基准准确率的同时推理延迟下降41%Raspberry Pi 5实测。关键指标对比配置模型大小端侧延迟(ms)MATH准确率FP321.2 GB184296.7%INT8静态312 MB108792.3%INT8动态312 MB89389.1%第五章总结与展望在实际微服务治理实践中可观测性已从“可选能力”演进为系统稳定性的核心支柱。某电商中台团队将 OpenTelemetry 与 PrometheusGrafana 深度集成后平均故障定位时间MTTD从 47 分钟缩短至 6.3 分钟。典型链路追踪增强实践// 在 HTTP 中间件中注入 trace context并标注业务语义 func TraceMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ctx : r.Context() span : trace.SpanFromContext(ctx) // 标注订单ID用于跨服务关联 span.SetAttributes(attribute.String(order_id, r.Header.Get(X-Order-ID))) next.ServeHTTP(w, r.WithContext(ctx)) }) }关键指标监控维度对比指标类型采集方式告警阈值示例HTTP 5xx 错误率Prometheus ServiceMonitor0.5% 持续 2 分钟gRPC 端到端延迟 P99OpenTelemetry Collector Jaeger800ms未来演进方向基于 eBPF 的零侵入式指标采集已在 Kubernetes v1.29 集群中完成灰度验证CPU 开销降低 62%AI 辅助根因分析模块已接入 AIOps 平台对 Redis 连接池耗尽类故障的自动归因准确率达 89.3%服务网格层Istio 1.22与 OpenTelemetry SDK 的原生适配正推动 Span 上报延迟稳定在 12ms 内[Trace Pipeline] Client → Envoy (W3C Trace Context) → OTLP Exporter → Collector → Jaeger UI Metrics Bridge → Prometheus

相关新闻

碳中和目标下AI能耗模拟新标准(GB/T 51366-2023实施后首份实测报告):3类建筑节能优化增益达19.6%~34.2%

碳中和目标下AI能耗模拟新标准(GB/T 51366-2023实施后首份实测报告):3类建筑节能优化增益达19.6%~34.2%

更多请点击: https://kaifayun.com 第一章:碳中和目标下AI建筑能耗模拟的范式跃迁 传统建筑能耗模拟长期依赖基于物理方程的稳态或准稳态模型(如EnergyPlus、TRNSYS),其高精度以高计算成本为代价,难以支撑…

2026/10/11 8:20:49 阅读更多 →
Flask构建无障碍社区服务平台的技术实践

Flask构建无障碍社区服务平台的技术实践

1. 项目背景与核心价值 社区残障人士服务平台是一个典型的Web应用开发项目,它需要解决三个核心问题:信息无障碍访问、服务精准对接和社区互助网络构建。选择PythonFlask作为技术栈,主要考虑到快速原型开发能力和轻量级部署的特点。 我在实际…

2026/10/11 20:27:35 阅读更多 →
零售业AI转型生死线(2024Q2真实数据预警):37%企业因这5类数据断层导致AI项目失败

零售业AI转型生死线(2024Q2真实数据预警):37%企业因这5类数据断层导致AI项目失败

更多请点击: https://intelliparadigm.com 第一章:零售业AI转型生死线(2024Q2真实数据预警):37%企业因这5类数据断层导致AI项目失败 2024年第二季度,麦肯锡与Retail AI Consortium联合发布的《零售AI落地…

2026/10/12 3:23:27 阅读更多 →

最新新闻

外部AI服务封装为编码助手Skill:网关调度与配额缓存实战

外部AI服务封装为编码助手Skill:网关调度与配额缓存实战

在进行这类封装之前,我建议你先想清楚一个问题:为什么要费力气把一个外部AI服务变成本地编码工具的Skill?单纯为了好看肯定不值得,真正驱动这件事的痛点,大概率是配额不够用、调用不够顺、或者团队里多人共用一套能力时…

2026/10/13 4:04:59 阅读更多 →
3W 学习法:从零上手 Cursor,打造高效 Java 开发体验(TaoToken 统一 Key 接入篇)

3W 学习法:从零上手 Cursor,打造高效 Java 开发体验(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/13 4:04:59 阅读更多 →
Java跨平台Word转PDF:加水印与中文字体乱码解决方案

Java跨平台Word转PDF:加水印与中文字体乱码解决方案

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

2026/10/13 4:04:59 阅读更多 →
储能辅助火电机组AGC二次调频的控制策略与容量优化配置

储能辅助火电机组AGC二次调频的控制策略与容量优化配置

1. 问题切入点:AGC二次调频的痛点与储能进场逻辑电力系统频率稳定是所有运行人员最敏感的一根神经。一次调频靠机组固有调速器动作,只能把频率变化“刹住”,无法把频率拉回额定值;真正把频率恢复到50Hz、消除区域联络线功率偏差的…

2026/10/13 4:04:59 阅读更多 →
Cursor 卡慢问题排查:把 Base URL 改到 TaoToken 后的请求链路优化

Cursor 卡慢问题排查:把 Base URL 改到 TaoToken 后的请求链路优化

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

2026/10/13 4:04:59 阅读更多 →
Python+Django+Vue实现流浪狗救助捐赠平台全栈开发实战

Python+Django+Vue实现流浪狗救助捐赠平台全栈开发实战

从接到这个项目需求的第一天起,我就很清楚它要解决的不只是"给流浪狗一个展示页面"这么简单。真正的痛点在信息不对称:救助站有狗没人领、有需求找不到稳定的捐赠来源,热心市民想帮忙却不知道钱和物具体用到了哪里。所以这个基于Py…

2026/10/13 4:03:59 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →