免费批量PDF转Word:基于Tesseract OCR的自动化解决方案
1. 项目概述为什么我们需要一个“最优解”处理PDF文件尤其是扫描件或图片型PDF几乎是每个需要处理文档的职场人、学生或研究者都会遇到的“痛点”。想象一下你手头有几十份、甚至上百份合同、报告或论文的扫描件你需要从中提取文字进行编辑、翻译或存档。如果一份份手动打开用OCR软件识别再复制粘贴不仅效率低下而且过程枯燥极易出错。更让人头疼的是市面上很多OCR工具要么收费昂贵要么识别准确率堪忧要么操作步骤繁琐难以实现真正的“批量”处理。这个项目标题——“PDF进行批量OCR文字识别并转Word文本的最优解完全免费”——精准地击中了这个普遍需求。它承诺了三个核心价值批量处理、高精度OCR识别、输出可编辑的Word格式并且完全免费。这听起来像是一个“不可能三角”但通过合理的工具组合与流程设计我们确实可以搭建一个稳定、高效且零成本的自动化解决方案。我将在接下来的内容里详细拆解如何利用开源或免费工具构建一套从PDF输入到Word输出的完整流水线并分享我在长期使用中积累的配置技巧和避坑经验。2. 核心思路与方案选型为什么是它们要实现这个目标我们需要一个清晰的“技术栈”。整个流程可以分解为三个核心环节PDF处理、OCR识别、格式转换与输出。每个环节都有多种工具可选我的选型基于以下几个原则免费开源优先、命令行操作便于批量自动化、跨平台兼容、识别准确率高、社区活跃问题易解决。2.1 PDF处理拆分与图像提取很多OCR工具直接处理PDF时内部也是先将每一页转换为图像。为了获得更精细的控制和更高的兼容性我们主动完成这一步。这里我选择PyMuPDF(fitz)这个Python库。它轻量、快速能无损提取PDF每一页为高分辨率图像并且能完美保留原始页面尺寸和布局信息这对后续OCR保持版面还原度至关重要。为什么不选其他工具像ImageMagick也能转换但它在处理某些复杂PDF尤其是带透明层或特殊字体时容易产生颜色失真或布局错乱。PyMuPDF是专门为PDF设计的在这方面表现更稳健。2.2 OCR识别引擎准确率的核心这是整个流程的心脏。经过大量实测我最终锁定Tesseract OCR。它是Google支持的开源OCR引擎支持超过100种语言准确率在开源领域中首屈一指并且仍在持续更新。更重要的是它可以通过命令行调用完美适配自动化脚本。这里有一个关键点必须使用训练好的语言数据包。默认安装的英文包可能对中文或混合文档识别不佳。我们需要下载并指定中文chi_sim简体中文chi_tra繁体中文或其他所需语言的数据包。Tesseract 5.0 版本对中文的识别准确率已经有了质的提升尤其是配合清晰的图像。注意对于版面特别复杂如多栏、表格、公式密集的文档纯Tesseract可能力有不逮。此时可以考虑PaddleOCR百度开源它对中文场景和复杂版面优化更好但部署稍复杂。本文以最通用、最易上手的Tesseract方案为主。2.3 格式转换与合成从文本到WordOCR识别后我们得到的是每一页的纯文本。但我们的目标是Word文档我们需要将文本、以及尽可能还原的段落、字体等格式信息写入.docx文件。这里我选择python-docx库。它允许我们通过编程方式创建和编辑Word文档灵活地设置样式、添加分页符。整个方案的流程如下图所示通过Python脚本串联起这三个核心组件形成一个自动化处理流水线。用户只需将PDF文件放入指定文件夹运行脚本即可在输出文件夹得到对应的Word文件。3. 环境准备与工具安装一步到位配置指南工欲善其事必先利其器。下面我会详细列出在Windows系统下的安装步骤macOS和Linux类似命令稍有不同。3.1 安装Python及必备库首先确保你的电脑安装了Python建议3.7及以上版本。打开命令提示符CMD或PowerShell使用pip安装我们需要的Python库pip install PyMuPDF pillow python-docxPyMuPDF: 用于处理PDF。Pillow: 图像处理库用于优化OCR前的图像。python-docx: 用于生成Word文档。3.2 安装Tesseract OCR引擎这是最关键的一步。不要通过pip安装pytesseract就以为完成了那只是一个调用接口核心引擎需要单独安装。下载安装包访问Tesseract在GitHub的发布页下载适用于Windows的安装程序例如tesseract-ocr-w64-setup-5.3.3.20231005.exe。运行安装安装过程中务必记住安装路径例如C:\Program Files\Tesseract-OCR。在选择组件的步骤有一个非常重要的操作展开“Additional language data”选项勾选你需要的语言包特别是“Chinese (Simplified)”和“Chinese (Traditional)”。这样能避免后续手动下载语言包的麻烦。配置系统环境变量安装完成后需要将Tesseract的可执行文件路径添加到系统的PATH环境变量中。右键点击“此电脑” - “属性” - “高级系统设置” - “环境变量”。在“系统变量”中找到并选中Path点击“编辑”。点击“新建”添加Tesseract的安装路径例如C:\Program Files\Tesseract-OCR。一路点击“确定”保存。验证安装重新打开一个命令提示符窗口输入tesseract --version。如果显示版本信息则安装成功。3.3 安装pytesseract封装库最后安装Python调用Tesseract的接口库pip install pytesseract安装完成后pytesseract库会默认去系统PATH中寻找tesseract.exe。如果遇到找不到的报错你可能需要在后续的Python脚本中通过pytesseract.pytesseract.tesseract_cmd手动指定其绝对路径。4. 核心脚本编写与逐行解析环境配置妥当接下来就是核心的Python脚本。我将脚本分解为几个函数并逐段解释其作用和关键参数。import fitz # PyMuPDF import os from PIL import Image import pytesseract from docx import Document from docx.shared import Pt import io def pdf_to_images(pdf_path, dpi200): 将PDF的每一页转换为图像。 :param pdf_path: PDF文件路径 :param dpi: 图像分辨率越高越清晰但处理越慢。200-300是OCR的甜点区。 :return: 包含PIL Image对象的列表 doc fitz.open(pdf_path) images [] for page_num in range(len(doc)): page doc.load_page(page_num) # 读取每一页 # 将页面转换为像素图矩阵设置分辨率 pix page.get_pixmap(matrixfitz.Matrix(dpi/72, dpi/72)) # 将像素数据转换为PIL Image对象 img_data pix.tobytes(ppm) img Image.open(io.BytesIO(img_data)) images.append(img) doc.close() return images def ocr_image_to_text(img, langchi_simeng): 对单张图像进行OCR识别。 :param img: PIL Image对象 :param lang: 语言参数chi_sim简体中文eng英文用连接可多语言 :return: 识别出的文本字符串 # 可选对图像进行预处理如转为灰度、二值化能提升识别率 # img img.convert(L) # 转为灰度 # 使用pytesseract进行OCR text pytesseract.image_to_string(img, langlang, config--psm 3 --oem 3) return text def process_pdf_to_word(pdf_path, output_dir, langchi_simeng): 主处理函数将单个PDF转换为Word文档。 # 1. 从PDF文件名生成Word文件名 pdf_name os.path.splitext(os.path.basename(pdf_path))[0] word_path os.path.join(output_dir, f{pdf_name}.docx) # 2. 创建Word文档对象 doc Document() # 设置一个基础样式可选 style doc.styles[Normal] style.font.name 宋体 style.font.size Pt(10.5) print(f正在处理: {pdf_name}) try: # 3. PDF转图像 images pdf_to_images(pdf_path, dpi250) # 使用250DPI保证清晰度 total_pages len(images) for idx, img in enumerate(images): print(f 识别第 {idx1}/{total_pages} 页...) # 4. 对每张图像进行OCR page_text ocr_image_to_text(img, langlang) # 5. 将文本添加到Word文档 # 每个页面识别出的文本作为一个段落或可根据换行符拆分 # 这里简单处理将整页文本作为一个段落 para doc.add_paragraph(page_text) # 如果不是最后一页添加分页符 if idx total_pages - 1: doc.add_page_break() # 6. 保存Word文档 doc.save(word_path) print(f 完成已保存至: {word_path}) return True except Exception as e: print(f 处理失败: {e}) return False def batch_process_pdf_folder(input_folder, output_folder, langchi_simeng): 批量处理文件夹内的所有PDF文件。 if not os.path.exists(output_folder): os.makedirs(output_folder) pdf_files [f for f in os.listdir(input_folder) if f.lower().endswith(.pdf)] total len(pdf_files) print(f在文件夹 {input_folder} 中找到 {total} 个PDF文件。) success_count 0 for i, pdf_file in enumerate(pdf_files): pdf_path os.path.join(input_folder, pdf_file) print(f\n[{i1}/{total}]) if process_pdf_to_word(pdf_path, output_folder, lang): success_count 1 print(f\n批量处理完成成功{success_count}/{total}) if __name__ __main__: # 配置你的输入和输出文件夹路径 INPUT_FOLDER rD:\待处理PDF OUTPUT_FOLDER rD:\输出Word文档 # 配置识别语言chi_sim简体中文、eng英文、jpn日文等用号连接 LANGUAGE chi_simeng # 运行批量处理 batch_process_pdf_folder(INPUT_FOLDER, OUTPUT_FOLDER, LANGUAGE)关键代码解析与调优点pdf_to_images函数中的dpi参数这是质量和速度的权衡点。72 DPI是屏幕显示标准但对于OCR来说太低。200-300 DPI是公认的最佳区间能提供足够清晰的字符图像供Tesseract识别又不至于让图像文件过大导致处理过慢。我设置为250是一个比较均衡的值。对于字体特别小或模糊的扫描件可以尝试提高到300或400。ocr_image_to_text函数中的config参数--psm 3和--oem 3是Tesseract的两个重要配置。--psm 3(Page Segmentation Mode): 表示“完全自动的页面分割但无OSD方向和脚本检测”。这是对标准文档如书籍、报告的默认推荐模式它能较好地识别出文本块。--oem 3(OCR Engine Mode): 表示“默认基于当前情况自动选择引擎”。Tesseract有传统的引擎和基于LSTM的神经网络引擎模式3会让它自动选择最好的。语言参数langchi_simeng表示同时使用简体中文和英文语言包进行识别。这对于中英文混合的文档至关重要。顺序有时有影响把主要语言放前面可能略有帮助。如果你的文档是纯英文则设为eng。5. 高级优化与实战技巧基础的脚本能跑通但要达到“最优解”的体验还需要一些优化技巧来应对复杂场景。5.1 图像预处理显著提升识别率直接从PDF转换的图像可能带有底色、噪点或倾斜影响OCR。我们可以在ocr_image_to_text函数中识别前加入预处理步骤def preprocess_image_for_ocr(img): 对图像进行预处理以优化OCR结果 # 1. 转换为灰度图 img img.convert(L) # 2. 可选提高对比度 # from PIL import ImageEnhance # enhancer ImageEnhance.Contrast(img) # img enhancer.enhance(2.0) # 增强2倍对比度 # 3. 可选二值化阈值处理 # threshold 160 # 阈值根据情况调整 # img img.point(lambda p: p threshold and 255) # 4. 可选降噪使用PIL的滤镜或OpenCV此处略 return img然后在OCR前调用processed_img preprocess_image_for_ocr(img)。对于背景发黄的老扫描件二值化效果立竿见影。5.2 处理超多页PDF内存管理与进度提示处理上百页的PDF时一次性将所有页面读入图像列表可能会消耗大量内存。我们可以修改流程采用“流式”处理一页一页地读取、识别、写入Word并及时释放内存。def process_large_pdf(pdf_path, output_path, langchi_simeng): doc fitz.open(pdf_path) word_doc Document() total len(doc) for page_num in range(total): print(f处理第 {page_num1}/{total} 页) # 只处理当前页 page doc.load_page(page_num) pix page.get_pixmap(matrixfitz.Matrix(250/72, 250/72)) img_data pix.tobytes(ppm) img Image.open(io.BytesIO(img_data)) text pytesseract.image_to_string(img, langlang) word_doc.add_paragraph(text) if page_num total - 1: word_doc.add_page_break() # 及时释放当前页资源 img.close() # 可以强制进行垃圾回收可选 # import gc # gc.collect() doc.close() word_doc.save(output_path)5.3 版面还原与样式设置目前的脚本将所有文本放入一个段落丢失了原始换行和段落信息。Tesseract可以输出每个识别单词的坐标pytesseract.image_to_data。利用这些坐标信息我们可以进行简单的版面分析比如将同一行的单词组合起来根据行间距判断段落。但这属于高级主题代码复杂度会急剧上升。对于大多数要求不苛刻的场景当前脚本的输出已经足够进行后续搜索和编辑。如果你希望保留简单的换行可以修改添加文本的方式page_text ocr_image_to_text(img, langlang) # 按行分割文本每行作为一个段落会生成很多短段落 lines page_text.split(\n) for line in lines: if line.strip(): # 忽略空行 doc.add_paragraph(line.strip())6. 常见问题排查与解决方案实录在实际操作中你几乎一定会遇到下面这些问题。这里是我踩过坑后总结的解决方案。6.1 Tesseract识别乱码或找不到语言包症状运行脚本报错Error opening data file...或识别出的中文全是乱码/方框。排查检查系统环境变量Path是否包含Tesseract安装路径。在命令行输入tesseract --list-langs查看已安装的语言包列表。确认chi_sim和eng在列。解决如果语言包未安装去Tesseract安装目录下的tessdata文件夹查看。如果没有需要手动下载。可以从GitHub的tessdata仓库下载.traineddata文件放入tessdata文件夹。在Python脚本中显式指定Tesseract路径如果环境变量不生效pytesseract.pytesseract.tesseract_cmd rC:\Program Files\Tesseract-OCR\tesseract.exe6.2 处理速度太慢症状一页PDF识别要十几秒。排查与解决降低DPI将pdf_to_images函数中的dpi从300降至200或150。这是最有效的方法。缩小图像尺寸如果PDF页面很大如A3可以在转换为图像后按比例缩小。img img.resize((int(img.width*0.5), int(img.height*0.5)), Image.Resampling.LANCZOS)使用多进程对于多核CPU可以同时处理多个PDF文件或一个PDF的多页。使用Python的concurrent.futures库可以轻松实现但要注意文件读写冲突。6.3 识别准确率不高症状文字错误多特别是数字、英文和特殊符号。排查与解决图像质量是根本确保源PDF扫描件本身清晰。如果原文件模糊任何OCR工具都无力回天。启用图像预处理务必使用前面提到的灰度化、二值化、对比度增强等方法。调整Tesseract的PSM模式对于单列文本可以尝试--psm 6对于单个单词或一行文本用--psm 7或--psm 8。通过pytesseract.image_to_string(..., config--psm 6)指定。指定单一语言如果文档是纯英文只使用langeng避免多语言模型互相干扰。后期校对对于重要文档OCR后的人工校对是必不可少的步骤。可以将此流程作为初稿生成工具。6.4 生成的Word文档排版错乱症状文字堆在一起没有分段或分页。解决当前脚本是按页添加分页符。如果希望按原始段落需要利用Tesseract更高级的布局分析功能输出hOCR或ALTO XML格式这涉及到复杂的坐标解析超出了本文“最优解”追求简便的范畴。一个折中方案是在OCR后根据连续的空行\n\n来分割段落但这依赖于OCR结果保留了足够的空白行信息。7. 方案总结与扩展思路经过以上步骤我们已经搭建起一个完全免费、可批量处理、识别率可接受的PDF转Word自动化工具。它的优势在于高度可控和可定制。你可以根据自己文档的特点调整DPI、预处理参数、Tesseract配置以达到速度与精度的最佳平衡。这个方案的核心价值在于自动化和免费。对于定期需要处理大量扫描PDF的行政、法务、学术研究人员来说它可以将从小时计的手工劳动压缩到分钟级的脚本运行。扩展思路图形界面GUI使用PyQt或Tkinter为脚本包装一个简单的界面让非技术人员也能方便使用选择文件夹和语言即可。集成更强大的OCR引擎如前所述对于复杂版面可以集成PaddleOCR。它提供了Python API识别效果在某些中文场景下更优但需要安装PaddlePaddle深度学习框架体积较大。输出格式多样化除了Word脚本可以轻松修改为输出纯文本.txt、Markdown.md或结构化数据如JSON。加入文件监控使用watchdog库监控某个文件夹一旦有新的PDF放入自动触发转换流程实现全自动化流水线。最后再分享一个我个人的小技巧对于非常重要的文档我会先用较低的DPI如150快速运行一遍脚本生成一个初版Word用于浏览和检索。然后针对其中识别不佳的特定页面单独用高DPI如400和加强的预处理参数重新识别再将结果粘贴替换进去。这种“粗细结合”的方法能在整体效率和关键质量之间取得很好的平衡。任何自动化工具都不是万能的理解其原理和局限才能让它真正成为你提升效率的得力助手。

相关新闻

正定矩阵判别全解析:从特征值到Cholesky分解的实战指南

正定矩阵判别全解析:从特征值到Cholesky分解的实战指南

1. 项目概述:从“正定性”到“惯性指数”的实战指南 在工程计算、优化算法和机器学习模型里,我们经常会碰到一个核心概念: 正定矩阵 。它不是一个停留在教科书里的抽象定义,而是判断一个二次型是否“开口向上”、一个优化问题是…

2026/10/18 14:33:07 阅读更多 →
Jackson @JsonSerialize注解深度解析:自定义序列化实战与性能优化

Jackson @JsonSerialize注解深度解析:自定义序列化实战与性能优化

1. 项目概述:为什么我们需要关注 JsonSerialize? 在Java后端开发中,对象与JSON字符串之间的转换是日常操作。无论是API接口的响应,还是数据存储前的处理,序列化(将对象转为JSON)和反序列化&…

2026/10/16 4:32:51 阅读更多 →
学术PPT模板高效应用指南:从红棕复古风模板到专业开题报告

学术PPT模板高效应用指南:从红棕复古风模板到专业开题报告

这次我们来看一个专门为学术场景设计的PPT模板项目——“红棕复古高级风学术论文开题报告PPT模板”。对于研究生、博士生以及需要进行正式学术汇报的科研人员来说,一份专业、美观且符合学术规范的PPT至关重要。这个模板项目直接瞄准了这一需求,它不是一个…

2026/10/16 4:33:01 阅读更多 →

最新新闻

结构化Diagram设计:让流程图变成可执行、可验证的系统逻辑

结构化Diagram设计:让流程图变成可执行、可验证的系统逻辑

1. 项目概述:这不是画图,是构建可执行的系统逻辑骨架“diagram-design”这个标题乍看像一个设计类小工具,但在我过去十年带过的几十个跨领域项目里,它从来不是PPT里的示意图,而是工程师、产品经理、硬件调试员和算法研…

2026/10/19 6:13:43 阅读更多 →
Cat.1模组内置GNSS实操:从AT指令到NMEA解析与低功耗设计

Cat.1模组内置GNSS实操:从AT指令到NMEA解析与低功耗设计

做带定位功能的产品,之前最标准的做法基本就是“MCU GPS芯片 4G模组”三件套拼在一起,软件上还要同时处理两路串口、两套电源时序和定位数据转发。这几年中低速物联网市场里,很多 Cat.1 模组直接把 GNSS 集成进去了,比如我手上的…

2026/10/19 6:13:43 阅读更多 →
decimal精度陷阱:金额计算为何不能用float

decimal精度陷阱:金额计算为何不能用float

1. 从一个“算错钱”的线上事故说起很多刚接触数据库开发的朋友,第一次被decimal坑到,往往不是在什么高深的技术场景里,而是在最朴素的地方——算钱。我印象特别深,早些年参与过一个内部记账模块的维护,测试环境跑得好…

2026/10/19 6:13:43 阅读更多 →
2025无偏渲染引擎全景对比:Arnold、V-Ray、Redshift等六款渲染器选型指南

2025无偏渲染引擎全景对比:Arnold、V-Ray、Redshift等六款渲染器选型指南

做CG这一行的,应该都躲不开渲染器选型这件事。打开社区论坛,2025年关于无偏渲染引擎的讨论热度比前几年高了不止一个量级,身边做建筑可视化的朋友已经把主力换成了Corona或者V-Ray的GPU模式,影视团队还在用Arnold稳扎稳打出片&…

2026/10/19 6:13:43 阅读更多 →
diagram-design:从草图到系统,如何设计出能评审、能落地的技术图表

diagram-design:从草图到系统,如何设计出能评审、能落地的技术图表

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次看到 “diagram-design” 这个标题,很多人会以为它只是教你怎么把图画得好看一点。但真正做过技术方案、写过设计文档、给团队讲过架构的人都知道,画图这件事从来不只是“美…

2026/10/19 6:13:43 阅读更多 →
artcraft:可调试、可复现的数字艺术工艺实践

artcraft:可调试、可复现的数字艺术工艺实践

1. 项目概述:从“artcraft”这个词开始,我们到底在做什么?“artcraft”这个词乍看像一个合成词,拆开是 art(艺术)和 craft(工艺、手艺),合起来直译就是“艺术工艺”&…

2026/10/19 6:12:42 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于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/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/18 12:16:16 阅读更多 →