Python微信小程序电子作业批改系统:OCR识别与自动判分实战
做教育信息化项目这些年“作业批改”始终是个高频需求。最近完成的这套“Python 微信小程序的电子作业批改系统”简单说就是把教师批改纸质作业的重复劳动拆掉一大半学生在微信小程序里拍照提交作业Python 后端接收图片后走OCR识别、文本解析、答案比对客观题自动判掉主观题给出参考得分并留给教师复核。这套系统从功能规划到落地过程里踩过不少坑也总结了很多可以直接照搬的经验。今天把整个设计和实现过程完整拆开讲适合正在做类似选题的学生开发者、想转型教育应用开发的工程师也适合教研机构评估技术方案时做参考。1. 项目整体定位与设计思路1.1 这个系统要解决的真实痛点先说个我观察到的现象大量学校仍然采用“纸质作业人工批改”的传统模式老师每天要花一到两个小时处理选择题、填空题这些高度机械的内容。真正的教学指导时间反而被压缩。电子作业批改系统要解决的不是把纸质作业完全电子化而是把“批改”这个环节中最重复的部分自动化。这个项目最初的需求来自一位朋友的教研团队。他们尝试过买市面上的成品系统但普遍存在两个问题一是价格高按班级按学期收费另一是不灵活比如英语老师希望批改作文时能自动圈出关键词数学老师希望填空题支持“数值区间”判定Excel导出的成绩单格式也千奇百怪。与其迁就现成工具不如自己做一套能掌控规则的小程序。所以整个系统的核心定位很明确让学生用手机拍照提交作业后端自动识别答案并完成初步批改教师只需要处理少量主观题和争议题目。使用微信小程序而不是原生App是因为无需安装、入口轻、学生家长都会用。Python作为后端语言则是因为OCR、文本处理、Web接口这些能力在Python生态里都相当成熟开发速度最快。1.2 技术栈选择背后的理由选型时我对比过几条路线H5网页版部署方便但调用摄像头拍照在部分浏览器和iOS WebView里兼容性问题很多上传大图的体验不稳定。原生App功能和性能最好但需要分发安装包对家长和学生来说门槛太高。微信小程序原生支持chooseImage拍照和uploadFile上传用户端体验顺畅。官方审核规范虽然有一些限制但教育工具类目现在很成熟。后端我最终用 Flask。理由有三第一这个项目的接口数量不多核心就十几个Flask的路由和请求处理非常直观第二批改逻辑主要是算法和文本处理不需要Django那种重型后台管理第三部署时Flask配合WSGI容器很简单一台云服务器就能跑。如果项目后续要扩展成完整的教务系统再迁Django也不迟反正业务逻辑和数据模型可以复用。数据库我选了MySQL主要因为成绩数据、学生信息今后很可能要跟学校已有系统对接MySQL相对通用。如果只是演示或小规模试用直接用SQLite也可以但需要把数据库连接层封装好方便切换。1.3 功能模块与角色分工系统的功能拆成三条主线教师端、学生端、批改引擎。角色核心功能关键动作教师班级管理、作业管理、批改规则配置、成绩导出创建班级、布置作业、上传标准答案、查看批改报告学生查看作业、拍照提交、查看反馈、错题订正选图片、裁剪压缩、确认上传、查看得分批改引擎接收图片、预处理、OCR识别、答案比对、结果入库解析标准答案、匹配答题区域、生成批改日志这不单单是一个线上版“对答案工具”因为批改引擎把“识别”“解析”“判定”三个过程都做了结构化处理。教师端最终看到的不是一句话“已批改”而是每一道题的得分、识别原文、判定依据。这样教师复核时有据可查学生订正时也能看懂错在哪。2. 批改引擎核心难点与实现方案2.1 图片预处理与OCR识别链路批改系统的地基是OCR也就是把作业图片里的文字变成文本。但直接拿原图去识别效果经常惨不忍睹特别是学生用手机拍的作业背景光线不均匀、纸张反光、字迹淡、角度倾斜这些都会让识别率大幅下降。所以我在识别前加了一套预处理流程。预处理的第一步是灰度化和二值化。彩色图片信息量大但识别的关键其实是文字的轮廓把图片转成灰度以后再用大津法自动算出阈值把文字区域变成白底黑字。这一步能显著提升对比度。第二步是倾斜矫正。手机拍照很难完全水平我用图像轮廓检测找到纸张边缘计算边缘直线与水平方向的夹角然后对整张图做旋转。这个动作看似简单对后续按行切分的准确率影响极大。第三步是自适应区域切分。一份作业通常有若干道题如果直接把整张纸的识别文本全堆在一起批改引擎没法知道哪段文字对应第几题。我的做法是先按视觉大区块分割图片识别出每一行的文本坐标再根据排版规则把连续的文本行归为一道题的区域。对于有“1.”“2.”这种题号的作业可以直接把“数字点”作为切分锚点。预处理完成后送入开源OCR引擎做文字识别。选OCR时我特别看重中文识别能力收集了一批真实作业图片做测试重点关注手写数字、常见汉字和英文单词的准确率。测试结果说明没有哪一种OCR是万能的所以系统里保留了“OCR引擎可插拔”的设计把识别调用封装成统一接口后续可以随时替换成识别效果更好的新模型。注意手机拍照往往会有摩尔纹和阴影预处理阶段尽量保留原始图片副本。一旦后面的识别结果异常可以用原始图重新处理而不是重新让学生提交。2.2 客观题批改的答案对齐逻辑客观题包括选择题、判断题和填空题。批改的核心不是“字符串相等”这么简单而是要先解决答案对齐问题。教师配置标准答案时我规定了一份简单的规则选择题用“1A 2B 3C”格式判断题用“1对 2错”格式填空题用“1:填空内容 2:填空内容”格式。后端解析规则时先拆出题号和答案存在一个有序列表里。识别出的学生答案文本经过清洗去掉多余空白、全角半角符号、沓到的重复字然后再做匹配。实际操作中我发现学生的书写作答经常出现“A”和“B”写得像、“对”和“错”在沟边的情况纯文本比对很容易误判。所以我在做判定时引入了“容错比例”对选择题如果识别出的字母与标准答案不是完全一致但比对相似度比较高就标记为“待复核”而不是直接判错。这里有一段典型的批改逻辑实现供参考import re def parse_answer_config(config_text): 解析标准答案配置支持两种格式 1. 连续式AABBD 2. 带序号式1:A 2:A 3:B 返回 {题号: 标准答案} result {} config_text config_text.strip() if re.search(r\d\s*[:], config_text): for part in re.split(r[;\n], config_text): part part.strip() if not part: continue match re.match(r(\d)\s*[:]\s*(.), part) if match: result[int(match.group(1))] match.group(2).strip() else: for idx, ch in enumerate(re.sub(r[^A-Za-z对错√×], , config_text), start1): result[idx] ch return result def grade_objective(submitted_text, standard_answers): 客观题批改按题号对齐后逐题判定 submitted_answers parse_answer_config(submitted_text) details [] for qid, standard in standard_answers.items(): submitted submitted_answers.get(qid, ) status correct if submitted standard else wrong if status wrong and similarity(submitted, standard) 0.6: status review # 模糊结果送人工复核 details.append({question_id: qid, submitted: submitted, standard: standard, status: status}) return details这段代码只展示了核心比对的骨架实际项目里还有一块很重要的逻辑空题检测。有些学生拍照时漏拍了一面或者某道题跳过了系统应该把这些题标记为“未作答”而不是“错误”。我的做法是识别文本中如果找不到这道题的对应区域就在批改报告里单独提示。2.3 主观题批改的三种策略主观题简答、作文、论述很难完全自动批改但我设计了三种策略按题目类型动态选用。策略一关键词/采分点匹配。适用于文科简答题和理科步骤题。教师在配置题目时输入若干采分点关键词比如“光合作用”“二氧化碳”“氧气”每个关键词给一个分值权重。批改时对识别文本做分词统计命中了哪些关键词按权重累加得分。这个策略实现简单效果也相对稳定缺点是没法处理学生换一种说法表达同一个意思的情况。策略二相似度计算。适用于有标准答案、但允许用不同表述的试题。把学生文本和标准答案先做分词分别计算词频向量然后算余弦相似度。相似度超过0.7给满分0.4到0.7给一半分低于0.4给低分并提示教师人工复核。这种策略依赖分词效果对中文的支持还可以缺点是计算量比关键词匹配大一些好在作业批改的文本量不大。策略三人工兜底。所有主观题不管自动得分多少都会出现在教师端的“待复核”列表里。教师在手机或电脑上看到题目原文、识别文本、自动得分一秒钟就能改判。我见过很多系统一上来就追求全自动结果误判率太高老师不信任。实际落地时“自动初评人工微调”才是主观题批改的最优解。代码示例def grade_subjective(submitted_text, rubric): 主观题评分关键词采分 相似度参考 rubric示例: { keywords: {光合作用: 3, 二氧化碳: 2, 水: 1}, similarity_threshold: 0.5 } score 0 hit_keywords [] for keyword, weight in rubric[keywords].items(): if keyword in submitted_text: score weight hit_keywords.append(keyword) # 相似度只作为附加参考 sim text_similarity(submitted_text, rubric.get(reference_answer, )) if sim rubric.get(similarity_threshold, 0.6): score 1 return {score: score, hit_keywords: hit_keywords, similarity: sim}2.4 批改规则的配置与扩展所有批改规则最终都以JSON格式存入数据库这样做的好处是可以在不发布新代码的情况下调整批改策略。教师端可视化页面把配置项组合成表单点击保存后生成JSON。我还预留了几类扩展规则数学填空题可以用数值区间比较而非精确匹配代码题可以在后端调用沙箱执行单元测试英语短文可以统计词数和常用搭配。这些都是后续迭代方向但核心数据结构在设计时就应该把“规则类型”留成字段方便扩展。3. 小程序端与后端接口的对接3.1 学生端拍照上传流程实现小程序端最核心的流程就是“拍作业 - 传作业 - 看结果”。我用原生组件实现了这个流程没有引入复杂的前端框架维护起来比较省心。拍照页面逻辑// 选择图片单选避免一次传太多张导致超时 wx.chooseImage({ count: 1, sizeType: [compressed], sourceType: [camera, album], success(res) { const tempFilePath res.tempFilePaths[0]; // 压缩并准备上传 wx.compressImage({ src: tempFilePath, quality: 80, success(compressed) { uploadHomework(compressed.tempFilePath); } }); } });这里有几个细节值得说。首先是count: 1因为一份作业可能有多个页面可以用“继续添加”的方式逐页上传避免一张大图压缩后仍然超过请求体限制。其次是sizeType: [compressed]小程序会对图片压缩但压缩比例不一定是想要的我需要再调用一次compressImage统一到质量80%这样上传体积基本能控制在500KB以内。上传接口我用wx.uploadFile携带两个关键字段homework_id作业ID和page_index页码。后端接收后返回submission_id小程序端拿到后马上显示“提交成功正在批改”。因为批改不是瞬间完成的我在前端做的是轮询查询状态每3秒请求一次批改进度超过30秒后提示学生稍后在“批改记录”里看结果。3.2 Python 后端的接口设计与任务处理后端接口我设计得尽量小而清晰。核心接口表如下接口方法用途/api/homework/createPOST教师创建作业录入题目和标准答案/api/submission/uploadPOST接收学生上传的作业图片/api/submission/statusGET查询批改进度和结果/api/grade/resultGET获取单次提交的批改明细/api/grade/reviewPOST教师修改主观题得分/api/class/statsGET获取班级成绩统计上传接口接收文件后先把原图存到本地磁盘的“待处理”目录然后把识别和批改任务放进后台队列。我一开始是同步处理的结果发现的问题是识别一张图约2-5秒整个批改加规则匹配又花1秒学生端请求会一直挂着体验非常差。后来改成异步接口立即返回“已接收”后台线程池处理完成后更新数据库状态。from flask import Flask, request, jsonify import os, uuid, threading from classifier import pipeline_predict app Flask(__name__) UPLOAD_DIR /data/homework_uploads TASK_QUEUE [] app.route(/api/submission/upload, methods[POST]) def upload_submission(): homework_id request.form.get(homework_id) page_index request.form.get(page_index, 1) file request.files.get(file) if not file: return jsonify({code: 400, msg: 文件不能为空}), 400 filename f{uuid.uuid4().hex}_{page_index}.jpg filepath os.path.join(UPLOAD_DIR, filename) file.save(filepath) task_id f{homework_id}_{uuid.uuid4().hex} TASK_QUEUE.append({task_id: task_id, filepath: filepath, homework_id: homework_id, status: pending}) # 将任务交给后台队列处理 worker.submit(process_task, TASK_QUEUE[-1]) return jsonify({code: 0, submission_id: task_id})后台队列我用的还是简单方案Python的线程池。对这个项目来说并发量不大线程池足够。如果以后要支撑几个学校同时使用再换成独立的任务队列接口和任务结构不需要大改。3.3 数据表设计与成绩统计分析数据库是系统的骨骼。我设计的表结构如下表名关键字段说明studentid, name, class_id学生基础信息teacherid, name教师信息homeworkid, teacher_id, title, config_json, deadline作业及批改规则submissionid, student_id, homework_id, images_json, status提交记录answer_recordid, submission_id, question_id, submitted_text, score, status每道题的批改结果review_recordid, answer_record_id, teacher_id, adjusted_score, comment人工复核记录其中answer_record是关键表。批改引擎产出的每一道题结果都落在这里状态用correct/wrong/review/unanswered区分。有了这个表成绩统计变得很简单按作业聚合answer_record算每道题的正确率分布按班级聚合算平均分和得分率柱状图。给学生端展示时我只显示分数和题目解析。给教师端展示时我看到的是“每道题得分率”和“需人工复核列表”这是老师最关心的两个维度。统计代码不多SQL里几行GROUP BY就能完成没必要单独建数仓。4. 部署上线与实战踩坑记录4.1 部署环境搭建与关键参数部署我用了一台入门级云服务器4核8G内存跑这个系统很轻松。流程分四步第一步装好Python环境推荐3.10以上版本用虚拟环境隔离依赖。第二步后端用WSGI容器启动4个进程、每进程4线程数据库连接池控制在8-16个连接。第三步配置反向代理把域名和公网端口转到后端服务同时处理上传文件的静态路径。第四步微信小程序后台配置合法域名也就是把后端API的HTTPS域名加入通信白名单。上传目录要单独挂载到独立硬盘分区防止日志和图片把系统盘塞满。另外必须写一个周期任务每天清理超过两周的临时图片只保留批改结果和统计报表。这个清理逻辑很重要作业图片涉及学生隐私学校会要求定期删除。4.2 高频问题排查速查表我在这个项目里遇到过的典型问题整理成了一张表格供大家直接参考。现象可能原因处理办法OCR识别结果全是乱码未做灰度化和二值化照片反光严重补预处理流程上传前提醒学生平铺纸张、避免强光客观题大面积误判学生填写了多个选项被识别成一句话清洗时保留单个字符命中多选项时标记“待复核”小程序上传超时图片没有压缩大图片超过接口限制前端强制压缩后端调大上传大小限制后端请求卡死同步执行OCR导致线程阻塞改成异步队列线程池大小与CPU核数匹配老师改判后学生端不更新查询结果走了缓存复核更新后主动刷新答案状态避免长时间缓存成绩成绩统计小数错位得分字段用了整数类型得分统一用DECIMAL(5,1)保留一位小数上传图片丢失文件保存路径是无权限目录统一用独立上传目录并确保运行用户有写权限4.3 几个提升体验的实操细节最后一个部分分享几个不太起眼但真实提升使用体验的细节。第一拍照引导。小程序页面里放一张“拍摄示例图”上面标注“平铺、正对、光线均匀”学生照着示例拍识别率明显提高。这是投入产出比最高的一行文字。第二批改结果分页加载。一次作业可能有30道题前端如果一次拉全部记录不仅慢而且在手机上滑动吃力。我让学生端默认只显示“对错总览”点进某道题才加载详情教师端复核时一次只加载10条记录配合“确认一条下一条”的顺序复核效率很高。第三错误反馈要站在学生角度。批改结果显示的不应该只有分数还有“参考答案”和“你的作答”。学生对照着看才知道错在哪。对于主观题显示命中/未命中的关键词比单纯给个低分有用得多。第四给教师留一个“一键设置全部人工复核”的按钮。有些作业老师并不信任自动批改或者当堂课就要发下去想快速过一遍。这个按钮把该作业所有批改结果重置为待复核教师就可以在手机上一次性刷完全班。个人实际操作中最大的体会是这类系统的技术难点其实不在“算法多高级”而在“流程是否真正贴合师生的使用习惯”。OCR识别率再高如果教师侧没有便捷的人工复核入口系统再智能也没有人敢用。相反允许教师随时介入、提供合理的置信度提示反而能建立信任感让自动批改越来越零干预。这个项目后续还可以扩展的方向不少把批改数据接到校本作业库做错题推荐增加语音点评让教师用手机直接录一段批改说明或者引入班级维度的学习报告周报。只要底层的表结构和批改规则封装置换得够干净这些功能都可以在这个基础上按同样思路长出来。

相关新闻

Hugging Face模型下载实战:命令行三大方式与避坑指南

Hugging Face模型下载实战:命令行三大方式与避坑指南

1. 项目概览与核心需求拆解做AI模型开发的人应该都经历过这种场景:看中了一个开源权重,想把它拉到本地跑一跑,结果打开Hugging Face(以下简称HF)的模型仓库页面,几百个文件散落在目录里,人工一个…

2026/10/17 8:36:23 阅读更多 →
机器人红队测试:物理扰动注入与失控边界量化

机器人红队测试:物理扰动注入与失控边界量化

1. 红队测试不是“找漏洞”,而是给机器人装上“压力传感器”很多人第一次听到“机器人红队测试”,下意识会联想到传统网络安全里那套——找个渗透工程师,拿Burp Suite扫扫API,用Metasploit打个补丁未修复的CVE,最后出份…

2026/10/17 8:35:23 阅读更多 →
经期预测小程序开发实战:从动态周期算法到隐私保护设计

经期预测小程序开发实战:从动态周期算法到隐私保护设计

1. 从一次"被算法欺骗"的经历说起:为什么经期预测这么难做去年我把自己的经期记录方式从Excel表迁到一款小程序上,起因非常朴素——每次手动推算下一次例假时间,都会被实际日期打脸。后来一个女生朋友吐槽说,市面上那些…

2026/10/17 8:35:23 阅读更多 →

最新新闻

《余烬边境》评测:搜打撤只是表象,RPG叙事选择才是精髓

《余烬边境》评测:搜打撤只是表象,RPG叙事选择才是精髓

1. 搜打撤基因几乎没有短板:这就是它抛出的烟雾弹我不知道多少人跟我一样,是抱着“找个塔科夫代餐”的心态点进《余烬边境》的。至少在我这儿,前四十个小时完全被骗得死死的——组队界面、装备槽、撤离点,甚至那个“局域网队友误伤…

2026/10/17 11:34:29 阅读更多 →
FlexPipe:碎片化GPU集群下的LLM推理动态并行策略换挡

FlexPipe:碎片化GPU集群下的LLM推理动态并行策略换挡

1. 所谓"碎片化GPU集群":先说清楚我面对的资源形态 如果你在某个公司管过一阵子大模型推理集群,大概率遇到过这个场景:明明集群里堆着不少卡,可线上推理服务的延迟曲线就是不稳定,白天高峰期还能勉强稳住&am…

2026/10/17 11:34:29 阅读更多 →
更新DOM完全指南:从原生操作到虚拟DOM渲染机制

更新DOM完全指南:从原生操作到虚拟DOM渲染机制

有人问更新DOM是什么操作,我认真想了想这个问题有人问“更新DOM是什么操作”的时候,往往是遇到了这样一种情况:代码里明明把数据改了,页面上却纹丝不动。或者更糟,页面动了,但输入框的焦点丢了、滚动条跳了…

2026/10/17 11:34:29 阅读更多 →
基于SpringBoot+Vue的智能图书馆管理系统全栈实战

基于SpringBoot+Vue的智能图书馆管理系统全栈实战

1. 从一次借书排队说起:这个系统解决的实际问题先说清楚我为什么动手做这个系统。基于SpringBoot Vue的智能图书馆管理系统,最早是源自一个困扰了很久的业务场景:某高校图书馆的日常借阅管理,被几套老系统和手工台账拆得稀碎。当…

2026/10/17 11:34:29 阅读更多 →
缺陷处理流程与软件测试生命周期:一线团队实操指南

缺陷处理流程与软件测试生命周期:一线团队实操指南

做软件测试这些年,被问得最多的问题不是“哪个测试工具好用”,也不是“怎么设计测试用例”,而是更基础也更要命的一个——发现一个Bug之后,到底该怎么处理才不算错?尤其是2020年前后那段时间,很多团队正从传…

2026/10/17 11:34:29 阅读更多 →
从词袋到即插即用:文本分类技术演进与实战指南

从词袋到即插即用:文本分类技术演进与实战指南

1. 文本分类的演进脉络与核心痛点拆解 文本分类这件事,说起来简单,做起来坑多。你手头有一堆文本,想给它们自动打上标签——情感是正面还是负面、邮件是正常还是垃圾、工单该分给哪个部门——这就是文本分类要解决的问题。从最早的词袋模型一…

2026/10/17 11:33:28 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →