PaddleOCR-v3 ONNXRuntime C++部署实战指南
简介本资源面向深度学习工程师与OCR应用开发者提供一套完整的PaddleOCR-v3模型ONNX Runtime跨语言部署方案解决工业场景中模型从训练到C/Python生产环境高效推理的落地难题。压缩包共22个文件含6个已转换ONNX模型覆盖文字检测、识别及角度分类、4个Python脚本含预处理、推理与后处理全流程、4个C源码及3个头文件封装模型加载、输入构造与结果解析辅以README说明、词典文件、示例图片和配置文本整体23.57MB结构清晰、开箱即用。已有680人学习下载读者可直接复用C/Python双端推理框架掌握PaddlePaddle模型→ONNX→ONNX Runtime的完整转换与部署链路并获得适配v3版本的优化参数、字典映射及图像预处理细节显著降低OCR服务集成门槛。1. ONNXRuntime部署PaddleOCR-v3为什么C比Python快3.2倍、内存低67%而90%的人卡在DLL加载失败上你手上有PaddleOCR-v3的模型想用ONNXRuntime在Windows生产环境跑起来——不是Jupyter里跑通就行而是要集成进工业质检软件、嵌入式边缘盒子或C主程序里。这时候你会发现Python版推理快但吃内存、启动慢C版吞吐高、延迟稳、资源省可一编译就报LNK2019: unresolved external symbol OrtCreateSession或者运行时弹窗“缺少MSVCP140.dll”——这根本不是代码问题是ONNXRuntime动态链接、Visual C运行时、模型算子兼容性三者咬合错位导致的黑匣子故障。本篇不讲概念复述只拆解真实产线落地路径从ONNX模型导出验证、C工程结构设计、VS2022项目配置三要素平台工具集/运行时库/附加依赖项、Python端轻量级服务封装到最常被忽略的GPU算子fallback机制和文本检测后处理内存泄漏点。适合已跑通PaddleOCR-Python但需交付C SDK的算法工程师、边缘部署工程师以及被客户要求“必须用C、不能装Python环境”的交付团队。2. 把PaddleOCR-v3转成ONNX不是导出就完事关键在shape infer和opset兼容性PaddleOCR-v3官方未提供ONNX原生支持必须通过paddle2onnx工具链转换。但直接paddle2onnx --model_dir ./inference/ch_ppocr_server_v2.0_det --save_file det.onnx会失败——因为v3检测模型含动态shape分支如DBNet的adaptive pooling而ONNX Runtime 1.16默认不启用--enable_onnx_checker且对Resize算子版本敏感。必须分三步做先冻结模型再注入shape hint最后指定opset。2.1 冻结PaddleOCR-v3模型并注入静态shapePaddleOCR-v3的inference模型是inference/det_db目录下的__model__和__params__但直接转会因fluid.layers.shape等动态op报错。需用paddle.jit.save导出静态图# export_static.py import paddle from paddleocr import PPStructure, PaddleOCR # 加载v3检测模型注意必须用v3对应commit非pip install最新版 ocr PaddleOCR( use_angle_clsFalse, langch, det_model_dir./inference/ch_ppocr_server_v2.0_det, # v3实际沿用server_v2.0_det结构 rec_model_dir./inference/ch_ppocr_server_v2.0_rec ) # 获取det模型静态图 det_model ocr.text_detector.model det_model.eval() # 构造dummy inputv3检测模型输入为[1,3,640,640]但实际支持range [320,1280] x paddle.randn([1, 3, 640, 640], dtypefloat32) # 关键用paddle.jit.to_static shape hint强制固定shape paddle.jit.to_static(input_spec[paddle.static.InputSpec(shape[1,3,640,640], dtypefloat32)]) def forward(x): return det_model(x) # 导出为inference model paddle.jit.save(forward, ./exported_det/static_det)提示input_spec中shape必须与后续ONNX Runtime推理时一致。若需支持多尺寸需导出多个模型或改用dynamic_axes见2.3节。2.2 用paddle2onnx转换并验证算子兼容性安装匹配版本ONNX Runtime 1.16要求paddle2onnx ≥ 1.1.0pip install paddle2onnx1.1.0执行转换必须指定opset12ONNX Runtime 1.16对opset13的NonMaxSuppression有兼容问题paddle2onnx \ --model_dir ./exported_det/static_det \ --save_file ./onnx_models/det_db_v3.onnx \ --opset_version 12 \ --enable_onnx_checker True \ --input_shape_dict {x:[1,3,640,640]}验证ONNX模型有效性非可选步骤import onnx from onnx import checker model onnx.load(./onnx_models/det_db_v3.onnx) checker.check_model(model) # 若报错90%是opset或dynamic_axes问题 print(ONNX model validated.)参数说明--input_shape_dict必须与input_spec完全一致--enable_onnx_checker开启后会校验tensor shape传播避免runtime报Invalid argument: Input tensor has incorrect rank。2.3 支持动态尺寸的ONNX导出方案适配产线多分辨率需求产线相机分辨率常为1920×1080、1280×720、640×480硬编码640×640会导致resize预处理失真。解决方案用dynamic_axes让batch和H/W维度可变# export_dynamic.py paddle.jit.to_static(input_spec[ paddle.static.InputSpec(shape[1,3,-1,-1], dtypefloat32) # H/W设为-1 ]) def forward_dynamic(x): return det_model(x) paddle.jit.save(forward_dynamic, ./exported_det/dynamic_det) # 转换时声明dynamic_axes paddle2onnx \ --model_dir ./exported_det/dynamic_det \ --save_file ./onnx_models/det_db_v3_dynamic.onnx \ --opset_version 12 \ --input_shape_dict {x:[1,3,640,640]} \ --dynamic_axes {x:{2:height,3:width}, save_infer_model/scale_0.tmp_0:{2:height,3:width}}注意dynamic_axes中输出tensor名需从ONNX graph中提取可用Netron打开查看此处save_infer_model/scale_0.tmp_0是DBNet输出feature map的name。若名字不对runtime会报Invalid argument: Input tensor has incorrect rank而非shape mismatch。3. C工程搭建VS2022项目配置三要素与ONNX Runtime动态库绑定ONNX Runtime C API不是头文件include就能用它依赖.lib导入库和.dll运行时库的精确匹配。常见错误LNK2019本质是链接器找不到OrtCreateSession符号——因为没正确链接onnxruntime.lib或链接了x64版却在Win32平台编译。3.1 下载并解压ONNX Runtime C SDK必须匹配CPU/GPU版本从 ONNX Runtime Release页面 下载对应版本本文以1.16.3为例CPU版onnxruntime-win-x64-1.16.3.zipGPU版CUDA 11.8onnxruntime-win-x64-gpu-1.16.3.zip解压后得到onnxruntime/ ├── include/ # C头文件 ├── lib/ # onnxruntime.lib导入库 ├── bin/ # onnxruntime.dll运行时库 └── third_party/ # protobuf等依赖关键bin/下的.dll必须随exe一起部署lib/下的.lib用于链接include/用于编译。三者版本号必须严格一致如1.16.3混用必报错。3.2 VS2022项目配置平台工具集、运行时库、附加依赖项新建空C控制台项目按以下三步配置缺一不可1平台工具集必须设为Visual Studio 2022 (v143)位置项目属性 → 常规 → 平台工具集原因ONNX Runtime 1.16编译于v143用v142会报unresolved external symbol __std_init_once。2C/C运行时库必须设为/MD多线程DLL位置项目属性 → C/C → 代码生成 → 运行时库原因ONNX Runtime DLL本身用/MD编译若你的项目用/MT静态链接CRT会导致内存管理冲突出现Access violation reading location。3链接器附加依赖项显式添加onnxruntime.lib位置项目属性 → 链接器 → 输入 → 附加依赖项值onnxruntime.lib同时设置链接器 → 常规 → 附加库目录 → 添加onnxruntime_path/lib// main.cpp 最小可运行示例 #include onnxruntime_cxx_api.h #include iostream #include vector int main() { // 初始化ORT环境必须 Ort::Env env(OrtLoggingLevel::ORT_LOGGING_LEVEL_WARNING); // 创建session options Ort::SessionOptions session_options; session_options.SetIntraOpNumThreads(2); // CPU线程数 // 加载ONNX模型 try { Ort::Session session(env, L./onnx_models/det_db_v3.onnx, session_options); std::cout ONNX Runtime session created successfully.\n; } catch (const std::exception e) { std::cerr Failed to create session: e.what() \n; return -1; } return 0; }编译前务必确认项目平台为x64非Win32字符集为使用Unicode字符集预编译头关闭ONNX Runtime头文件不依赖PCH。3.3 部署时DLL缺失问题Microsoft Visual C 2015-2022 Redistributable是刚需即使VS2022编译成功双击exe仍可能弹窗“无法启动此程序因为计算机中丢失MSVCP140.dll”。这不是你的错——ONNX Runtime依赖VC 2015-2022运行时而该运行时不会随VS安装自动部署到目标机器。解决方案二选一推荐在安装包中打包vc_redist.x64.exe从 微软官网下载 安装时静默执行vc_redist.x64.exe /quiet /norestart替代将MSVCP140.dll、VCRUNTIME140.dll、VCRUNTIME140_1.dll从C:\Windows\System32复制到exe同目录仅限测试违反微软EULA生产禁用。血泪经验某客户现场服务器未装VC运行时我们花2小时排查网络权限最后发现是这个DLL缺失。建议在C入口加检测#include windows.h if (GetModuleHandle(LMSVCP140.dll) nullptr) { MessageBoxA(nullptr, Missing VC 2015-2022 Redistributable, Error, MB_OK | MB_ICONERROR); return -1; }4. Python端轻量服务封装用Flask暴露ONNXRuntime推理API避开PyTorch依赖很多团队误以为“Python部署直接调PaddleOCR”结果发现paddlepaddle-gpu占显存、启动慢、与现有Flask服务冲突。正确做法是用ONNX Runtime Python API封装成独立推理服务零依赖PaddlePaddle。4.1 构建最小ONNX Runtime Python服务无PaddlePaddle# onnx_service.py from flask import Flask, request, jsonify import numpy as np import onnxruntime as ort from PIL import Image import io app Flask(__name__) # 初始化ONNX Runtime session全局单例避免重复加载 ort_session ort.InferenceSession(./onnx_models/det_db_v3.onnx, providers[CPUExecutionProvider]) # GPU用[CUDAExecutionProvider] app.route(/detect, methods[POST]) def detect(): try: # 读取图像 file request.files[image] img Image.open(io.BytesIO(file.read())).convert(RGB) # 预处理resize到640x640归一化NHWC→NCHW img img.resize((640, 640), Image.BILINEAR) img_array np.array(img).astype(np.float32) / 255.0 img_array img_array.transpose(2, 0, 1)[np.newaxis, ...] # [1,3,640,640] # 推理 inputs {ort_session.get_inputs()[0].name: img_array} outputs ort_session.run(None, inputs) # 输出是[1,1,640,640]的score map需后处理DBNet score_map outputs[0][0, 0] # 取batch0, channel0 # 此处省略DB后处理阈值polygon生成详见PaddleOCR源码ppocr/postprocess/db_postprocess.py return jsonify({status: success, score_map_shape: list(score_map.shape)}) except Exception as e: return jsonify({error: str(e)}), 400 if __name__ __main__: app.run(host0.0.0.0, port5000, debugFalse)启动命令python onnx_service.py测试curl -X POST -F imagetest.jpg http://localhost:5000/detect4.2 性能对比ONNX Runtime vs 原生PaddleOCR Python在Intel i7-11800H 32GB RAM上实测batch1640×640输入方案首帧延迟持续FPS内存占用是否需PaddlePaddle原生PaddleOCR1240ms18.31.2GB是ONNX Runtime CPU380ms29.7420MB否ONNX Runtime GPU110ms87.2680MB否关键结论ONNX Runtime去掉PaddlePaddle解释器开销首帧快3.2倍内存降低67%且onnxruntime-gpu自动管理CUDA context无需手动cuda.empty_cache()。4.3 多模型串联检测识别一体化ONNX流水线PaddleOCR-v3的识别模型CRNN同样可转ONNX。构建串联pipeline时必须复用同一ORT Session避免重复初始化开销# pipeline.py class OCRPipeline: def __init__(self, det_path, rec_path): self.det_session ort.InferenceSession(det_path, providers[CPUExecutionProvider]) self.rec_session ort.InferenceSession(rec_path, providers[CPUExecutionProvider]) def __call__(self, image): # Step 1: 检测 det_input self.preprocess_det(image) det_output self.det_session.run(None, {x: det_input})[0] boxes self.postprocess_det(det_output) # DB后处理 # Step 2: 对每个box crop resize → 识别 rec_results [] for box in boxes: cropped self.crop_and_resize(image, box) # 实现crop逻辑 rec_input self.preprocess_rec(cropped) rec_output self.rec_session.run(None, {x: rec_input})[0] text self.decode_rec(rec_output) # CTC decode rec_results.append(text) return rec_results注意识别模型输入尺寸为[1,3,32,100]高度固定32crop后必须resize否则ONNX Runtime报Input tensor has incorrect size。5. 避坑指南ONNXRuntime部署PaddleOCR-v3的5个血泪故障点ONNX Runtime部署PaddleOCR不是“导出→加载→run”三步走而是处处埋雷。以下是产线真实踩坑记录按现象→原因→解决结构整理覆盖95%报错场景。5.1 现象OrtCreateSession failed: Invalid argument: Input tensor has incorrect rank原因ONNX模型输入shape与runtime传入tensor shape不匹配。常见于动态轴未正确声明或Python端np.expand_dims(img, axis0)漏写。解决用Netron打开ONNX模型检查Inputs节点shape如[1,3,640,640]确保C/Python中Ort::Value::CreateTensor或np.array().reshape()完全一致动态轴场景下检查dynamic_axes是否包含所有可变维度。5.2 现象C程序启动即崩溃事件查看器显示APPCRASH模块onnxruntime.dll原因VC运行时版本不匹配。ONNX Runtime 1.16需VC 2015-2022 Redistributable而旧系统可能只有2013版。解决在目标机器运行vc_redist.x64.exe /quiet或用Dependency Walker检查onnxruntime.dll依赖的VCRUNTIME140_1.dll是否存在。5.3 现象GPU推理时providers[CUDAExecutionProvider]报错Invalid provider原因ONNX Runtime GPU版未正确安装或CUDA驱动版本过低需≥11.2。解决下载onnxruntime-win-x64-gpu-*.zip并替换bin/下所有DLL运行nvidia-smi确认驱动≥460.89在代码中加provider检查std::vectorstd::string available_providers Ort::GetAvailableProviders(); for (auto p : available_providers) std::cout p \n; // 应含CudaExecutionProvider5.4 现象Python服务返回空结果日志无报错原因ONNX模型输出tensor name与代码中session.run()索引不一致。PaddleOCR-v3检测模型输出为save_infer_model/scale_0.tmp_0但部分转换版本输出为output。解决用Netron打开ONNX查看Outputs节点namePython中改为session.run([output], inputs)C中用session.GetOutputName(0, allocator)获取真实name。5.5 现象C多次调用session.Run()后内存持续增长最终OOM原因ONNX Runtime默认启用内存池但PaddleOCR后处理如DBNet的polygon生成在C中手动malloc未free。解决禁用ORT内存池加session_options.SetGraphOptimizationLevel(ORT_DISABLE_ALL);或严格管理后处理内存——所有new uint8_t[]必须配对delete[]更安全做法用std::vectoruint8_t替代裸指针。提示用Windows性能监视器perfmon添加Process → Private Bytes计数器观察每次Run后内存是否回落。若不回落必有内存泄漏。6. 进阶技巧GPU fallback机制与DBNet后处理C重实现ONNX Runtime的GPU执行提供fallback能力——当GPU算子不支持时自动切回CPU。但PaddleOCR-v3的DBNet含GatherElements等较新opCUDA EP可能不支持导致fallback失效而直接报错。此时需主动控制fallback策略并重写关键后处理逻辑。6.1 强制启用GPU fallback并监控算子执行位置ONNX Runtime默认不启用fallback需显式设置Ort::SessionOptions session_options; session_options.SetGraphOptimizationLevel(ORT_ENABLE_EXTENDED); session_options.SetLogSeverityLevel(ORT_LOGGING_LEVEL_WARNING); // 启用GPU fallback当CUDA op不支持时自动用CPU执行该node OrtCUDAProviderOptions cuda_options; cuda_options.device_id 0; cuda_options.cudnn_conv_algo_search OrtCudnnConvAlgoSearch::ORT_CUDNN_CONV_ALGO_SEARCH_DEFAULT; session_options.AppendExecutionProvider_CUDA(cuda_options); // 创建session后检查实际执行provider Ort::Session session(env, L./det.onnx, session_options); auto providers session.GetProviders(); // 返回[CUDAExecutionProvider, CPUExecutionProvider]验证fallback是否生效在CUDA不支持的op如Resizewithcoordinate_transformation_modehalf_pixel上用Nsight Systems抓取GPU timeline若看到CPU kernel执行说明fallback成功。6.2 DBNet后处理C重实现避免OpenCV依赖减小部署包体积PaddleOCR Python后处理依赖OpenCV而C端若不想引入OpenCV DLL20MB可纯用Eigen重写DBNet阈值polygon生成// db_postprocess.h #include Eigen/Dense #include vector struct Polygon { std::vectorstd::pairfloat, float points; }; std::vectorPolygon db_postprocess(const Eigen::MatrixXf score_map, float threshold 0.3f, float box_thresh 0.5f) { // Step 1: 二值化score_map threshold auto binary (score_map.array() threshold).castfloat(); // Step 2: 连通域分析简化版用四邻域DFS int h score_map.rows(), w score_map.cols(); std::vectorstd::vectorbool visited(h, std::vectorbool(w, false)); std::vectorPolygon polygons; for (int i 0; i h; i) { for (int j 0; j w; j) { if (binary(i,j) 0 !visited[i][j]) { // DFS找连通区域 std::vectorstd::pairint,int region; std::stackstd::pairint,int stack; stack.push({i,j}); visited[i][j] true; while (!stack.empty()) { auto [x,y] stack.top(); stack.pop(); region.push_back({x,y}); // 四邻域 for (auto [dx,dy] : std::vectorstd::pairint,int{{-1,0},{1,0},{0,-1},{0,1}}) { int nx xdx, ny ydy; if (nx0nxhny0nyw binary(nx,ny)0 !visited[nx][ny]) { visited[nx][ny] true; stack.push({nx,ny}); } } } // Step 3: 最小外接矩形简化为axis-aligned bounding box if (region.size() 10) { // 过滤噪声 float min_x1e5, max_x-1e5, min_y1e5, max_y-1e5; for (auto [x,y] : region) { min_x std::min(min_x, (float)x); max_x std::max(max_x, (float)x); min_y std::min(min_y, (float)y); max_y std::max(max_y, (float)y); } polygons.push_back({ {{min_y,min_x}, {max_y,min_x}, {max_y,max_x}, {min_y,max_x}} }); } } } } return polygons; }说明此实现省略了PaddleOCR中复杂的min_area过滤、unclip膨胀、polygon拟合但满足80%产线需求如OCR定位框。若需高精度polygon建议保留OpenCV的findContours但用opencv_world455.dll单文件部署比modules拆分小50%。6.3 模型量化INT8推理提速40%但需校准数据集ONNX Runtime支持INT8量化对PaddleOCR-v3检测模型可提速40%CPU且精度损失0.5% AP# quantize.py from onnxruntime.quantization import QuantFormat, QuantType, quantize_static from onnxruntime.quantization.calibrate import CalibrationDataReader class PaddleOCRCalibrator(CalibrationDataReader): def __init__(self, calibration_images): self.enum_data None self.calibration_images calibration_images self.datasize len(calibration_images) def get_next(self): if self.enum_data is None: self.enum_data iter([(np.random.rand(1,3,640,640).astype(np.float32), None)] * 100) return next(self.enum_data, None) quantize_static( model_input./onnx_models/det_db_v3.onnx, model_output./onnx_models/det_db_v3_int8.onnx, calibration_data_readerPaddleOCRCalibrator([]), # 替换为真实校准图 quant_formatQuantFormat.QOperator, per_channelTrue, reduce_rangeFalse, weight_typeQuantType.QInt8 )关键参数per_channelTrue对卷积权重逐通道量化提升精度reduce_rangeFalseINT8范围-128~127非-127~127校准图需100张真实产线图像非random。我坚持一个习惯每次交付C SDK前用Process Explorer检查exe加载的DLL列表确保只有onnxruntime.dll、MSVCP140.dll、VCRUNTIME140.dll三个外部依赖——这意味着客户部署时只需拷贝这4个文件而不是整个Python环境。PaddleOCR-v3的ONNX部署不是技术炫技而是把算法变成可嵌入、可审计、可维护的工业组件。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

基于SpringBoot+Vue的医院门诊排队叫号系统的设计与实现

基于SpringBoot+Vue的医院门诊排队叫号系统的设计与实现

摘 要 目的:传统门诊运行过程中,存在挂号效率低、现场秩序混乱等问题,本文围绕医院门诊排队叫号系统的设计与实现开展研究,运用信息化技术,为不同使用角色,提供一体化数字化解决方案。方法:根据…

2026/10/11 12:21:21 阅读更多 →
轮椅检测数据集VOC+YOLO格式13826张单类别:YOLOv8训练与避坑指南

轮椅检测数据集VOC+YOLO格式13826张单类别:YOLOv8训练与避坑指南

简介:本资源为轮椅检测数据集,面向计算机视觉方向的目标检测学习者、算法工程师及需要轮椅识别场景落地的开发者,可用于训练与验证单类别检测模型。数据集同时提供Pascal VOC与YOLO两种标注格式,包含jpg图片及一一对应的xml、txt标…

2026/10/11 12:21:21 阅读更多 →
【实战教程】基于 Python/Java 实现全平台短视频去水印解析(含防重放签名算法解析)

【实战教程】基于 Python/Java 实现全平台短视频去水印解析(含防重放签名算法解析)

在开发自媒体矩阵管理工具或数据采集系统时,我们经常需要处理短视频链接的解析需求。通常的做法是通过无头浏览器(Puppeteer/Selenium)去逆向解析页面 DOM,但随着各大平台(如某音、某手、X/Twitter)频繁更换…

2026/10/11 12:21:20 阅读更多 →

最新新闻

关键词URL采集工具实战:从乱码链接中高效提取与去重

关键词URL采集工具实战:从乱码链接中高效提取与去重

简介:关键词URL采集工具是一套面向SEO优化、市场调研与数据挖掘从业者的自动化网址搜集方案,核心用途是依据指定关键词批量抓取搜索引擎结果页中的匹配链接,替代人工逐页翻找,降低时间成本。资源包共4个文件,以rar格式…

2026/10/11 13:56:13 阅读更多 →
rea实战:用脚本自动化浏览器重复操作,打造高效流程

rea实战:用脚本自动化浏览器重复操作,打造高效流程

首先要跟看到这个标题的朋友解释一下:我平时写自动化脚本,经常要给临时项目起个随手能打的代号,rea就是从里面蹦出来的三个字母。它的全称被我私下写成 Repeat Everything Automatically——听起来有点中二,实际上做的事情特别接地…

2026/10/11 13:56:13 阅读更多 →
从Cursor杀回命令行:AI辅助编程下的工具选型与控制权

从Cursor杀回命令行:AI辅助编程下的工具选型与控制权

最近几个月,我观察到一个挺有意思的现象:身边不少同事、群里一些老开发者,陆续把默认编辑器从Cursor切回了终端里的Vim、Neovim,或者干脆就是一套纯命令行的开发环境。不是他们跟不上时代,恰恰相反——他们在AI辅助编程…

2026/10/11 13:56:13 阅读更多 →
【程序源代码】校园跑腿服务系统

【程序源代码】校园跑腿服务系统

摘要:校园跑腿服务系统是一套面向高校场景的前后端分离校园服务系统,由微信小程序端、Koa2 服务端、Vue 网页管理后台三部分组成,覆盖跑腿代取、打印服务、校园代理、订单交易、微信支付、用户角色管理等校园生活服务业务。学生可通过小程序发…

2026/10/11 13:56:13 阅读更多 →
UML核心视图实战:图书管理系统建模从用例图到构件图

UML核心视图实战:图书管理系统建模从用例图到构件图

简介:这份PPT面向软件工程、计算机专业学生及UML初学者,围绕统一建模语言UML的核心视图,以ABC高校图书管理系统为完整案例,讲解从需求分析到静态建模的全过程。内容涵盖用例视图的参与者、用例与关系识别,读者借还书、…

2026/10/11 13:56:13 阅读更多 →
某东h5st逆向实战:webpack签名参数定位与Python复现

某东h5st逆向实战:webpack签名参数定位与Python复现

简介:这份资源面向具备一定前端基础、希望深入理解移动端加密参数生成机制的爬虫学习者与安全测试人员,围绕某东平台webpack打包方式下的h5st逆向分析,提供一套可运行的完整代码示例。压缩包共2个文件,包含1个Python脚本与1个Java…

2026/10/11 13:55:12 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →