新闻详情

新闻详情

首页 / 资讯中心 / 详情

PaddleOCR 本地离线识别实战:从模型选型到微调部署

发布时间:2026/9/29 17:44:22来源:尧图网络
PaddleOCR 本地离线识别实战:从模型选型到微调部署
简介面向需要在本地离线场景下集成文字识别能力的开发者这份压缩包基于百度PaddleOCR搭建了完整可运行的识别环境支持Python与VC两种调用方式尤其适合数据敏感或网络不稳定的PC应用。包内共35个文件、约67.15MB主要包含可执行程序与动态链接库、识别模型及参数文件以及VC测试工程源码、OpenCV和深度学习计算库等运行依赖既能直接命令行运行识别也方便二次编译集成到自有项目。资源已有22859人学习下载适合快速上手离线OCR。通过示例控制台和可视化输出使用者可直观体验图片文字提取效果并可参考源码将识别能力嵌入软件实现完全离线的通用文字识别兼顾数据安全与响应速度是本地OCR落地的一套实用参考。1. 本地离线也需要 OCRPaddleOCR 为什么是通用场景的首选很多开发者的第一反应是“OCR 不就是调云 API”可真到生产环境就发现内网机房没有外网、客户数据不能出域、单张图里既有印刷体又有手写体还要求高准确率云 API 根本不敢放进主流程。百度开源的 PaddleOCR 正好解决这三件事——它完全本地离线识别模型权重下载一次之后就不再碰网络PP-OCR 系列覆盖中英文识别、表格、版面分析等常见场景通用识别度极高而且从 pip 安装到训练自己数据、再到服务化部署整套工具链都是开源的。这篇笔记按实际落地的顺序写先跑通最小环境再调参数把精度提上来讲清踩过的坑最后落到训练和生产部署。2. 把 PaddleOCR 装进本地环境从零跑通第一张图的完整命令2.1 安装前的三个决策Python 版本、CPU/GPU、安装源PaddleOCR 不是独立二进制程序而是基于 PaddlePaddle 深度学习框架的 Python 工具库。安装分两层底层是 paddlepaddle 推理引擎上层是 paddleocr 封装好的 OCR 工具库顺序反了会出怪问题先把底层装对。决策一Python 版本选 3.83.12我一般用 3.10。太老的 3.7 对新版 PaddlePaddle 支持已收窄太新的 3.13 又容易出现算子兼容问题。先建独立虚拟环境避免和已有项目的 numpy、opencv 打架# 创建 Python 3.10 虚拟环境并激活 conda create -n ocr python3.10 -y conda activate ocr决策二确认有没有 GPU。有 N 卡且有 CUDA 环境就装 GPU 版识别速度能快一个量级没有就让 CPU 扛也不用绝望后面有 CPU 提速的参数组合。GPU 版安装必须指定与驱动匹配的 CUDA 版本装错最常见的报错是运行时报错找不到 libcudart 动态库。我的建议是先用 CPU 版把整个流程跑通再换 GPU 版排错成本低很多# CPU 版安装最稳先装这个跑通流程 pip install paddlepaddle # GPU 版安装具体版本以本机 nvidia-smi 支持上限为准 pip install paddlepaddle-gpu决策三安装源。目标是本地离线识别安装阶段最好一次就把依赖拉全。百度官方 PyPI 镜像在国内速度快同步也及时pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple pip install paddleocr -i https://mirror.baidu.com/pypi/simple装完先验证底层引擎能不能跑这一步能筛掉一大半“装完一运行就崩”的问题python -c import paddle; paddle.utils.run_check()如果输出运行检查通过说明引擎层面没问题。这一步报错先别往 OCR 上查优先看 CUDA 版本和驱动是否匹配、numpy 是否被意外升级。等引擎正常了再继续装上层工具库和排查 OCR 调用问题域就清晰了。2.2 首次跑通最小推理脚本识别一张图要写多少行代码引擎装好后写个最小脚本验证流程。这里有个重要前置知识PaddleOCR 第一次执行PaddleOCR()构造时会自动检测本地有没有模型权重没有就联网下载。所以“本地离线识别”指的是推理阶段可以断网但首次准备模型文件时必须有网或者手动把模型文件拷进本地目录。一个最简调用长这样# 最小推理示例识别一张本地图片 from paddleocr import PaddleOCR ocr PaddleOCR( use_angle_clsTrue, # 启用方向分类器处理旋转文本 langch, # 使用中文模型同时决定了下载哪套权重 show_logFalse # 关掉推理日志只看结果 ) result ocr.ocr(data/sample.jpg, clsTrue) # 输出格式[[框坐标, (文本, 置信度)], ...] for line in result[0]: print(line[1][0], round(float(line[1][1]), 4))这段脚本的逻辑是构造 OCR 对象时指定中文模型并开启方向分类器接着做“文本检测 方向分类 文本识别”的端到端推理。result的每一行对应图片里的一个文本区域line[0]是四角坐标line[1]是(识别文本, 置信度)。在这个阶段只需要确认三件事模型文件是否下载成功、图片是否正常读取、输出是否可读。如果结果乱码或大量空白先别怀疑模型大概率是配置问题。第一图片路径不要用中文第二构造参数use_angle_clsTrue和调用参数clsTrue要保持一致第三手机随手拍的竖版文本如果没开方向分类器识别率会明显下降。把这些确认清楚再谈精度和性能。一个更实用的验证方式是把结果画出来直观看到检测框和文本是否对得上# 可视化检测与识别结果 from paddleocr import PaddleOCR import cv2 import numpy as np ocr PaddleOCR(use_angle_clsTrue, langch, show_logFalse) result ocr.ocr(data/sample.jpg, clsTrue) img cv2.imread(data/sample.jpg) for line in result[0]: box [[int(x), int(y)] for x, y in line[0]] # 四个角点 text, score line[1] cv2.polylines(img, [np.array(box)], True, (0, 255, 0), 2) cv2.putText(img, f{text} {score:.2f}, (box[0][0], max(box[0][1] - 10, 0)), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.imwrite(output/result.jpg, img)polylines把检测框画到图上putText把识别文本和置信度写到框上方。打开output/result.jpg看框是否贴合文字、有没有漏检错检这一步比盯指标更直观。确认没问题最小链路就算通了。2.3 新旧接口的写法差异ocr.ocr 和 predict 到底用哪个这是网上教程最容易坑人的地方。PaddleOCR 从 2.x 升级到 3.x 时推荐的推理接口从ocr.ocr()换成了ocr.predict()返回对象结构也不一样。老教程抄来的代码装上新版本一运行就报错不少人卡在这一关。先查自己装的版本pip show paddleocr | grep Version2.x 版本继续用ocr.ocr()3.x 版本推荐改用predict()# 新版 PaddleOCR 推荐写法3.x from paddleocr import PaddleOCR ocr PaddleOCR( use_doc_orientation_classifyFalse, # 整图方向分类一般场景关掉省时间 use_doc_unwarpingFalse, # 文档矫正曲面拍摄才需要 use_textline_orientationTrue, # 行级方向分类竖排场景保持开启 langch ) result ocr.predict(data/sample.jpg) # 新接口返回预测对象集合直接取文本和置信度 for res in result: for item in res[rec_texts]: print(item)参数说明use_doc_orientation_classify控制整张图的方向分类普通横排文档直接关掉能省一段推理时间use_doc_unwarping是文档展开矫正只有拍变形、曲面书本才需要use_textline_orientation负责行级方向判断竖排文字、倒置文字场景必须开着。新接口里predict()返回 dict键rec_texts直接给出识别文本列表比老接口解析嵌套列表更省事。老项目如果已经在用 2.x 接口不升级代码也行但新项目建议直接用新接口少踩一层坑。3. 通用识别度极高的关键模型选型与推理参数调优3.1 模型选型从 PP-OCRv4 到 v6 tiny通用场景怎么选PaddleOCR 的“通用识别度极高”靠的不是单个模型而是“检测 方向分类 识别”三段式流水线。模型命名里 PP-OCR 后面的版本号越大通常精度越高带 tiny 后缀的是速度和体积折中版server 版精度高但体积和耗时都上去了。选择逻辑主要看部署条件和目标场景场景推荐选择注意点有 GPU、追求通用精度最新标准 mobile 版精度与速度最均衡训练部署资料也最全CPU 部署、对延迟敏感tiny 系列模型体积小很多推理快精度损失在可控范围单行文字、印章、扫码mobile 版足够不用追最新版本稳定优先大量竖排、倾斜、艺术字较新版本 方向分类器全开竖排场景必须use_textline_orientationTrue实际项目中我倾向保守策略能用当前稳定版 mobile 就先用不要一上来追最新。等业务验证了精度瓶颈确实存在再评估是否升级。标题里说“v6 tiny 速度”这个方向确实适合 CPU 场景——tiny 模型在端到端耗时上比标准 mobile 版通常有明显优势代价是在复杂背景、密集小字上的识别率略低。如果你的图片来源比较干净比如截图、扫描件tiny 完全够用。模型权重文件不跟着 pip 包走而是运行时按配置下载到用户目录默认是~/.paddleocr/。生产环境建议用det_model_dir、rec_model_dir、cls_model_dir三个参数显式指定本地路径第一次联网把权重拉下来后整个~/.paddleocr目录拷到离线机器代码里指好路径就彻底断开了运行时的网络依赖这是本地离线识别的标准姿势。3.2 检测与识别参数det_db_thresh、rec_score_thresh 到底影响什么很多人在 PaddleOCR 里只调lang和方向分类开关识别率低了就怪模型不行。实际上几个推理参数对结果的影响比换模型更大而且免费。det_db_thresh是文本检测后处理的二值化阈值默认 0.3。它决定一个像素被判为“前景文本”的概率门槛。调低它更多模糊、浅色文字会被保留漏检变少代价是背景纹理、水印可能被当成文本送进识别器产生一堆乱码。调高则相反。我的经验值印刷体清晰文档用默认 0.3 就很好手机实拍、屏幕截图、室内光照不均的图调到 0.2 会让漏检率明显下降。det_db_box_thresh是检测框维度的过滤阈值默认 0.5低于该分数的框被丢弃。如果检测出来的框总是不完整、半截文字可以适当调低到 0.4如果框一大堆但很多是错框就调高。配合det_db_thresh一起动通常能找到平衡点。rec_score_thresh是识别结果置信度阈值默认 0.5低于它就过滤。结果里混入大量水印、logo、背景噪声的乱识别调高到 0.60.7 能滤掉一批低置信度输出反过来发现真实文字被误过滤就调低。看一个实际配置组合# 面向“手机实拍文档”场景的推荐参数 ocr PaddleOCR( det_db_thresh0.2, # 略降检测阈值减少漏检 det_db_box_thresh0.4, # 放宽检测框过滤 rec_score_thresh0.6, # 过滤水印、噪声造成的低置信度输出 use_angle_clsTrue, # 处理拍照产生的旋转 langch, show_logFalse )这组参数适合“实拍、光照不均、可能有水印”的通用场景。det_db_thresh降低让模糊边界文字更容易被检测出来rec_score_thresh提高把背景噪声的乱识别挡在外面一低一高配合经常比换大模型更见效。3.3 图像预处理三板斧缩放、灰度、二值化在什么时候有用把图喂给 PaddleOCR 之前很多问题能用几行预处理提前解决比事后调参更省事。缩放。PaddleOCR 对过小的图检测会漏字对过大的图检测会慢。我一般把长边 resize 到 9601280 像素再送入识别。手机拍的 4000 像素宽照片直接喂进去耗时成倍增加识别率也没见提升。这个操作对 CPU 场景尤其关键是性价比最高的一步。灰度化。印刷体黑白截图直接彩色识别没问题但蓝底白字、红底黑字这类高对比度彩色底纹先灰度化并拉大对比度能显著提高检测稳定性。原因很简单检测模型训练数据以自然拍照为主纯色底纹会干扰它的二值化判断。二值化。适用于“底纹复杂、字是纯黑或纯白”的票据和扫描件。用 OpenCV 的自适应二值化把背景噪声直接抹掉# 预处理灰度化 自适应二值化适用于底纹复杂的票据 import cv2 img cv2.imread(ticket.jpg) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) binary cv2.adaptiveThreshold( gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, # 高斯加权邻域 cv2.THRESH_BINARY, 31, # 邻域块大小必须是奇数 15 # 常数 C越大背景越干净 ) cv2.imwrite(ticket_binary.jpg, binary)逻辑说明先把图转灰度再用自适应阈值把每个局部区域独立二值化。块大小 31 表示每个像素参考周围 31x31 范围内的亮度分布常数 15 在这个基础上再压低 15 个灰度级背景噪声通常就这样被抹掉。二值化不是万能的它会连浅色文字一起抹掉所以只建议在票据、证件扫描件这类背景复杂但文字对比度统一的场景使用。旋转校正。如果图片倾斜角度超过 30 度但不到 90 度方向分类器也容易懵。先用 Hough 变换或手动旋转把主体文本摆正再送入识别。这属于“脏活前置”在进模型之前解决比依赖模型硬扛可靠。预处理不是越强越好核心原则是“贴近模型的训练数据分布”。模型在自然拍摄图上训练你把图预处理成四不像反而拉低识别率。4. PaddleOCR 翻车现场避坑指南模型下载、乱码与性能瓶颈4.1 现象离线机器首次运行卡在“Downloading model”现象把程序部署到内网机器第一次执行PaddleOCR(langch)日志停在下载权重文件上然后超时、重试、再超时。原因PaddleOCR 默认首次推理前按参数下载检测、方向分类、识别三套模型。内网机器访问不了外网下载地址卡在拉取阶段。这其实是部署方式问题——只装了 pip 包没把模型权重这层考虑进去。解决在一台联网机器上装好 paddleocr随便跑一次让模型落入默认缓存目录然后把整个~/.paddleocr目录打包带到离线机器放到相同用户目录。更稳的方式是代码里显式指定模型目录用det_model_dir、rec_model_dir、cls_model_dir三个参数分别指向对应权重所在路径。这样不依赖默认目录是否存在部署脚本里写清楚模型路径即依赖才算真正的本地离线识别。提示检查离线环境是否就绪先看目标机器上~/.paddleocr里有没有det、rec、cls三个子目录有则说明权重已落位。4.2 现象Windows 下中文路径导致进程崩溃或读不到图现象Windows 上运行图片放在C:\项目资料\测试\1.jpg这类中文路径下运行时 OpenCV 或 PaddleOCR 内部报错有的报 UnicodeDecodeError有的直接进程崩溃。原因PaddleOCR 内部图像读取和预处理对非 ASCII 路径处理不完善。这是个老坑它不在接口层报错而在引擎深处炸排查起来很消耗时间。解决项目根目录、图片路径、输出路径全部用英文小写字母和数字不出现中文、空格、特殊字符。业务系统路径已经带中文的在程序里先把图片转存到英文临时目录再交给 PaddleOCR。有人用cv2.imdecode(np.fromfile(...))绕开读取问题但检测内部仍有其他路径操作最省心的办法就是转存到全英文路径。4.3 现象CPU 推理一张 4000 像素大图要 812 秒现象同样的代码在 CPU 机器上慢到没法用单张图端到端识别要好几秒甚至超过十秒。原因三个因素叠加。第一图太大检测阶段在 4000 像素宽的图上做尺度遍历计算量成倍增加第二加载了“识别 方向分类”两套模型每个检测框都要过方向分类第三标准 mobile 模型在 CPU 上本来就不快。解决按优先级尝试。先把长边缩到 960 像素耗时能砍掉一半以上然后如果图片文字基本不旋转关闭方向分类器又能省一截最后还不够换 tiny 系模型配合低分辨率输入CPU 上能跑到可用水平。我自己的经验值是一张 720p 截图走“缩放 关闭方向分类 tiny 识别”这套组合在普通办公 CPU 上能压到 1 秒附近。对速度敏感的场景PaddleOCR 的 tiny 系值得重点关注——体积小、速度快通用场景的识别度损失在可控范围。4.4 现象识别结果全空或者输出一堆乱码现象图片里明明是清晰中文结果result是空列表偶尔输出一行乱码。原因空结果通常是检测阶段一个框都没找出来常见于浅色小字、高亮背景或分辨率过低乱码则是方向分类没启用时竖排或倒置文本被强行横向识别。另一个隐蔽点老接口ocr.ocr()里必须传clsTrue才会执行方向分类构造参数use_angle_clsTrue并不会覆盖调用时的参数两者的组合关系容易记混。解决先开show_logTrue看检测阶段输出了几个框。一个框都没有去调det_db_thresh或做预处理框很多但识别为空检查识别置信度阈值是否调得过高。乱码方向检查use_angle_cls和cls是否配套开启。最后实在找不出原因用预处理流程统一跑一遍对比很多时候是输入图质量问题而不是模型能力不够。4.5 现象GPU 环境报显存不足或推理时直接 OOM现象GPU 机器上跑超大图或大 batch 时进程报 CUDA out of memory有时只是单张图也崩。原因PaddleOCR 默认在 GPU 上申请大量显存图太大时检测阶段的多尺度推理会把显存撑爆。还有一个常见因素是开了多个PaddleOCR()实例每个实例都各自加载一套模型显存翻倍。解决第一先缩放输入图长边控制在 1280 以内显存压力立刻变小第二整个程序里只创建一个PaddleOCR()实例后续请求复用它避免重复加载和显存浪费第三如果显存还是紧张把eval_batch_size和推理配置里的 batch 调成 1逐张推理。4G 显存的卡也能跑通用场景关键是控制输入尺寸不放飞。5. 用自己的数据做领域识别PaddleOCR 训练与微调全流程5.1 数据标注用 PPOCRLabel 制作检测与识别数据集当通用模型在领域数据上识别率不够比如生僻地名、化学符号、特定字体就需要给模型喂自己的数据。PaddleOCR 官方推荐的路径是 PPOCRLabel 标注工具它同时产出检测和识别两种格式的数据。标注流程准备几百到几千张领域图片用 PPOCRLabel 打开框出每个文本区域并转写正确文字。保存后同一个标注文件里既有检测框坐标又有识别文本。这一步工作量最大但它决定了后面是“微调提升”还是“白练一场”。我见过有人拿 100 张图微调出不错效果也见过 5000 张图没调好区别就在于前者标注质量高、框边界贴合、转写无错字后者框松松垮垮模型学了一堆背景边缘。数据目录建议按官方推荐结构组织train_data/ ├── det/ │ ├── images/ # 检测训练原图 │ └── Label.txt # 标注格式图片路径 文本框坐标 文本内容 └── rec/ ├── images/ # 识别训练裁剪图 └── rec_gt.txt # 标注格式图片路径 制表符 转写文本检测标注的Label.txt每行长这样images/001.jpg [{points: [[10, 20], [210, 20], [210, 60], [10, 60]], transcription: 企业名称, difficult: false}]。识别标注rec_gt.txt更简单001.jpg 企业名称中间是制表符。数据量方面检测任务少则两三百张识别任务建议每个类别至少几十个样本。类别不均衡是常见坑你打算识别的生僻字在数据里只出现 5 次模型基本学不会需要定向补充。标注完后用官方脚本把数据按 8:2 分训练集和验证集验证集千万不能和训练集来自同一批模板否则评估指标虚高。5.2 微调识别模型训练命令、参数与显存建议数据备好后从 PaddleOCR 官方仓库拉训练代码和配置。训练配置走 YAML里面定义了模型结构、数据路径、学习率等。以微调识别模型为例常见做法是# 克隆 PaddleOCR 仓库训练脚本在 tools/ 下 git clone https://github.com/PaddlePaddle/PaddleOCR.git cd PaddleOCR # 安装训练依赖 pip install -r requirements.txt # 下载官方预训练权重放到 pretrain/ 目录 # 微调识别模型 python tools/train.py \ -c configs/rec/PP-OCRv4/ch_PP-OCRv4_rec.yml \ -o Global.pretrained_model./pretrain/PP-OCRv4_rec_train \ Global.epoch_num100 \ Global.train_batch_size32 \ Global.eval_batch_size64 \ Global.use_gpuTrue \ Global.save_model_dir./output/rec_finetune \ Train.dataset.data_dir./train_data/ \ Train.dataset.label_file_list./train_data/rec_gt.txt \ Eval.dataset.data_dir./train_data/ \ Eval.dataset.label_file_list./train_data/rec_eval.txt命令逻辑-c指定基础配置 YAML-o覆盖其中关键项。Global.pretrained_model是预训练权重前缀PaddleOCR 从它加载参数而不是从零训练这是领域微调的核心——小数据也能快速收敛。epoch_num微调 50150 都常见先跑 50 轮看损失曲线再决定加不加。train_batch_size32大约需要 812G 显存不够就降到 16 或 8学习率也按比例下降。大批量需要更小的学习率才能稳住收敛这是经验法则。训练日志主要盯loss和acc。当 acc 在验证集上开始震荡或不再下降就该停了。训练产物是模型权重PaddleOCR 需要先导出成推理模型再用于部署# 导出推理模型 python tools/export_model.py \ -c configs/rec/PP-OCRv4/ch_PP-OCRv4_rec.yml \ -o Global.pretrained_model./output/rec_finetune/best_model \ Global.save_inference_dir./inference/rec_finetune导出后得到inference.pdmodel和inference.pdiparams两个文件分别对应模型结构和参数。把这两个文件替换到本地识别模型目录里推理代码里的rec_model_dir指过去即可。替换前先备份原模型目录这是你的后悔药。5.3 评估与导出指标之外还要看失败样本很多人验证阶段只盯平均准确率走出训练目录在真实数据上一跑就漏成筛子。我的习惯是固定留 200300 张真实拍摄图做“验收集”这些图不参与训练也不参与验证专门用来跑训练出的模型把误识别、漏检的图翻出来人工逐张过。评估用官方工具# 识别模型评估 python tools/eval.py \ -c configs/rec/PP-OCRv4/ch_PP-OCRv4_rec.yml \ -o Global.pretrained_model./output/rec_finetune/best_model \ Global.eval_batch_size64 \ Eval.dataset.data_dir./train_data/ \ Eval.dataset.label_file_list./train_data/rec_eval.txtbest_model是训练过程中在验证集上表现最好的权重不是最后一轮。eval 脚本输出 acc 和 norm_edit_distance 等指标。但指标过了不代表能上线——我踩过印象很深的坑acc 到 0.98上线第一天被“带划线的手写数字”打回原形因为这些样本训练数据里根本没有。训练数据没覆盖的失败模式指标再高也救不了必须单独收集补充。评估阶段每张图的定性结果比一个平均分可靠得多失败样本才决定能不能上线。6. 把 PaddleOCR 从脚本变成服务部署形态与验证技巧6.1 三种部署形态进程内调用、独立服务、PaddleX 一站式最早我把 PaddleOCR 直接嵌在业务进程里图片一张张调ocr.ocr()。简单是简单但业务代码一抛异常OCR 引擎就要重新初始化模型加载一次好几秒。后来改成独立服务省心很多进程常驻模型只加载一次外部通过 HTTP 传图片路径返回结果。小型项目用 FastAPI 包一层就够几十行代码撑起一个 OCR 服务。涉及多模型、批量任务、服务化编排时PaddleX 这套官方工具链会省力不少它把检测、识别、版面分析、表格识别等 pipeline 统一管理适合做复杂文档智能处理。6.2 我的验证习惯用真实场景图集做回归测试不管哪种部署形态上线前一定要建立一个固定图片集做回归测试。我在项目里维护一个test_cases/目录放各场景样图清晰印刷体、手机实拍、模糊扫描件、含表格、含竖排、含手写。每次改参数、换模型、升级版本整批跑一遍把“识别结果相比上次是否变差”作为硬性验收标准。这个习惯帮我排查过一个隐蔽问题升级 PaddleOCR 版本后整体 acc 没变但某个客户场景的特定字体识别率明显退化。如果没做回归测试这种退化会被平均指标完美掩盖。跑完测试后我会把每张图的耗时、识别文本、置信度存成 JSON 快照留给后续版本对比。一个项目做久了这份快照就是团队的后悔药模型升级翻车时能立刻回滚对比而不是靠记忆猜哪个参数变了。OCR 落地这件事跑通只是起点真正的功夫在参数、数据和验证这些细活上。PaddleOCR 本地离线识别的好处恰恰是每一步都可以自己掌控不用把数据送出内网也能反复试错。我的经验总结成一句话先固定输入质量再调模型参数最后用验收集锁住效果这条路对新手和熟手都适用。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Superpowers实战:给Codex套上团队规范,让AI编程更可控 2026/9/29 18:56:04

Superpowers实战:给Codex套上团队规范,让AI编程更可控

1. 一个不够"懂规矩"的 Codex,以及 Superpowers 想解决的问题 最近总有人问我:"你天天吹 AI 编程,怎么感觉你写代码也没快多少?"说实话,我一开始用 Codex 的时候确实有这种感觉。它确实能写&#…

阅读更多 →
废墟图书馆Mod开发实战:BepInEx实现自动掷骰与战斗动画优化 2026/9/29 18:56:04

废墟图书馆Mod开发实战:BepInEx实现自动掷骰与战斗动画优化

很多从《废墟图书馆》入门模组开发的玩家,最初的需求往往不是做一套完整的规则重构,而是解决“战斗演出太拖沓”“每次拼点都要等动画”“伤害数字不够直观”这类体验问题。网上关于这类自制 mod 的教程非常零散,要么只讲安装现成插件&#x…

阅读更多 →
YOLOv8在海思Hi3516CV610上的NPU部署全流程实战 2026/9/29 18:56:04

YOLOv8在海思Hi3516CV610上的NPU部署全流程实战

直接说结论:在Hi3516CV610这颗板子上把YOLOv8跑起来,中间要踩的坑绝对比你想象的多。模型训练只是第一步,从PyTorch权重到板上NPU真正出检测框,中间要过ONNX导出、算子对齐、离线量化、格式转换、板端封装五道关卡,每一…

阅读更多 →
模型压缩与推理加速实战:Model-Optimizer工具链全解析 2026/9/29 18:56:04

模型压缩与推理加速实战:Model-Optimizer工具链全解析

做模型部署久了,你会发现最终折磨你的往往不是模型精度,而是模型体积和推理延迟。业务方给的设备五花八门,从服务器GPU到边缘开发板,同样的模型在不同硬件上的表现天差地别。前两年我集中精力折腾模型优化,从剪枝到量化…

阅读更多 →
Agentic AI Infra:从模型到智能体的工程底座与落地实践 2026/9/29 18:56:04

Agentic AI Infra:从模型到智能体的工程底座与落地实践

云栖2026把主论坛的主题定在Agentic AI Infra上,老实说,我一点都不意外。过去两年大家聊模型、卷参数,真正做过智能体项目的人,多半会遇到同一个怪圈:新出的模型看起来什么都会,可真把它放进一个业务场景里…

阅读更多 →
Visual Studio构建三兄弟:devenv、MSBuild与cl.exe的分工协作 2026/9/29 18:55:57

Visual Studio构建三兄弟:devenv、MSBuild与cl.exe的分工协作

写代码的人基本都有过这样的经历:在 Visual Studio 2017 里点一下“生成解决方案”,看着输出窗口刷刷滚完一堆编译日志,exe 就有了。但你有没有想过,这一下点击背后,其实动用了三个不同的工具?devenv、msbu…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉