深度学习OCR系统实战:基于PyTorch的CRNN+CTC文字识别
简介基于深度学习的文字识别系统完整项目包面向毕业设计、课程设计与期末大作业场景适合需要快速搭建OCR系统的计算机相关专业学生。项目采用CNN与RNN结合实现文字检测与识别覆盖图像预处理、模型训练、后端接口与移动端展示全流程可复用于文档扫描、车牌识别等场景。资源共2011个文件压缩包54.61MB以Markdown文档1366个、Python源码175个、JavaScript文件351个和JSON配置39个为主md文档便于阅读学习py脚本涵盖Django服务端与模型相关逻辑js文件对应Vue移动端模板的交互实现。另有C模块涉及OCR检测、分类与识别等底层处理以及图像去噪、二值化、倾斜校正等预处理代码便于二次开发与算法理解。已有54人学习该资源内容结构清晰从环境配置到前后端联调均有涵盖可帮助快速理解文字识别系统完整实现思路适合作为课设报告与答辩的参考资料。1. 基于深度学习的文字识别系统毕业设计、课程设计与入门复现的首选落点做毕业设计或期末大作业时最怕的不是题目难而是交上去的东西自己都说不清原理。OCR这个方向看起来遍地是现成API但真要交一份能讲清楚、能跑通、能现场演示的系统大多数同学手里其实只有一张调接口的截图。这份基于深度学习的文字识别系统落点是PyTorch CNN 循环神经网络的经典识别链路把图片进、文字出的完整流程做成了可以直接跑的工程。它适合三类人需要交课程设计或毕业设计的学生想从零搭一套OCR但不想从论文读起的入门者以及想在本地GPU上做文字识别模型训练与推理验证的工程师。它能解决的核心问题很明确不依赖云服务在本地完成从训练数据准备、模型训练到推理识别的完整闭环。2. 从传统特征到端到端识别这套系统为什么选 CRNN 和 CTC2.1 深度学习文字识别的一条主线检测与识别分离文字识别系统在工程上通常拆成两个阶段先定位图像里哪儿有文字再做区域里的文字内容识别。这套系统没有把重心放在检测端而是把核心放在识别端——假设你已经有一张裁剪好的单行文字图片系统负责把里面的字符序列输出出来。这种设计思路在课程设计和毕业设计里非常常见因为把检测和识别一起做工作量和调参难度都会翻倍。常见做法是用CRNN卷积循环神经网络作为识别主干配合CTCConnectionist Temporal Classification损失函数。CNN部分负责从输入图像中提取视觉特征把图片编码成一系列特征序列循环神经网络部分负责建模字符之间的时序依赖最后CTC负责把每一帧的分类结果对齐成最终的字符序列。这套组合在场景文字识别里被验证得足够成熟PyTorch实现起来代码量可控也容易写进论文的原理章节。2.2 为什么不是注意力机制或Transformer方案很多人会问现在Transformer在视觉领域这么火为什么毕业设计还要用CRNN原因有两层。第一层是数据量CRNN在几千到几万张训练图上就能得到比较稳定的效果而基于注意力或Transformer的方案在小数据集上很容易过拟合调参成本高训练时间也长。第二层是解释性答辩和课程报告里讲CNN提取了什么特征、循环神经网络如何建模序列、CTC如何解决对齐问题这些概念都有非常具体的可视化结果和数学表达远比Transformer里的自注意力机制好讲。从工程角度说PyTorch搭建文字识别模型这条路线生态支持最全。不管是预训练模型、数据增强库还是部署工具都优先支持这类经典结构。作为课程设计把这样一条完整链路跑通比套一个大模型然后说不清内部原理要扎实得多。2.3 系统目录结构与关键文件的作用拿到资源后第一件事是建立对工程结构的整体认知。常见的整理方式是这样ocr_system/ ├── config/ # 配置文件包含模型参数和训练超参数 │ └── config.yaml ├── data/ # 数据集目录按训练/验证/测试划分 │ ├── train/ │ ├── val/ │ └── test/ ├── models/ # 网络结构定义 │ ├── crnn.py # CRNN模型定义 │ └── ctc_decoder.py # CTC解码器 ├── utils/ # 工具函数 │ └── data_loader.py # 数据加载与预处理 ├── train.py # 训练入口 ├── infer.py # 单张图片推理入口 └── requirements.txtconfig/config.yaml是整个训练过程的控制中枢里面定义了图像高度通常固定为32像素、通道数、CNN层数、循环神经网络隐藏层维度、学习率、batch size等参数。data_loader.py负责把图片路径和对应的文本标签组成batch同时做随机裁剪、旋转、噪声等数据增强。train.py里定义了训练主循环、CTC损失计算和模型保存策略。infer.py则加载训练好的权重文件对输入图片做前向推理并输出识别文本。2.4 配置参数里的关键选项config.yaml里最需要关注的参数有几个图像高度、字符类别数、循环神经网络层数。图像高度固定成32是CRNN的典型设置因为下采样倍数通常是16输入高度32刚好能输出高度方向的1个特征点。字符类别数必须和你数据集的字符表完全一致差一个数字都会导致模型结构不匹配。循环神经网络层数一般设2再多训练时梯度容易不稳定。一个容易被忽略的参数是CTC解码时用的beam宽度。推理阶段用beam search会比贪心解码更准但速度会慢。课程设计建议先用贪心解码跑通流程最后再调beam search看效果提升这样在答辩现场能展示两组结果的对比。3. 从零跑通推理环境搭建与第一张图片识别3.1 环境要求与依赖安装拿到的资源里通常没有打包训练好的模型权重因为pt文件体积动辄上百MB。因此第一步是把环境装好然后根据README的指引下载权重文件或者直接用资源里附带的小规模预训练权重跑一次推理。# Python 3.8推荐用conda创建虚拟环境 conda create -n ocr_env python3.8 conda activate ocr_env # 安装PyTorch根据CUDA版本选择对应命令 # CPU版 pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu # GPU版示例为CUDA 11.8 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 # 安装依赖 pip install opencv-python pillow numpy pyyaml tqdmPyTorch的安装版本要谨慎。CPU版的好处是兼容性极强任何电脑都能跑识别一张图耗时几百毫秒到一两秒做演示完全够用。GPU版训练速度快十倍以上但如果CUDA版本和显卡驱动对不上会在import torch时直接报错。可以先把CPU版跑通再决定要不要换成GPU版。深度学习环境配置是很多人第一步就翻车的地方我一般建议先用CPU环境复现推理确认代码逻辑没问题之后再折腾CUDA加速。3.2 分步完成首次推理把资源和代码放到本地后执行推理脚本之前先确认三件事模型权重文件放哪个目录、字符表文件char_map.json在不在、测试图片的格式是否符合输入要求。字符表是识别的基础里面存了从字符到索引的映射。如果模型是英文字符集中文图片自然识别不出来。# 执行识别 python infer.py --image data/test/demo.png --weights checkpoints/model_best.pth --char_map char_map.json推理脚本内部做的事情按顺序拆开看是这样的# 加载字符映射表 char_map json.load(open(args.char_map, r, encodingutf-8)) idx_to_char {v: k for k, v in char_map.items()} # 读取图片并做预处理 image cv2.imread(args.image, cv2.IMREAD_GRAYSCALE) h, w image.shape target_h 32 # CRNN标准输入高度 scale target_h / h new_w int(w * scale) image cv2.resize(image, (new_w, target_h), interpolationcv2.INTER_CUBIC) # 归一化到[0,1]区间并转为Tensor image_tensor torch.FloatTensor(image).unsqueeze(0).unsqueeze(0) / 255.0 # 前向推理 model.eval() with torch.no_grad(): output model(image_tensor) # 输出形状 [1, T, num_classes] # CTC解码贪心方式取每帧最大概率的字符 pred_ids torch.argmax(output, dim2).squeeze(0).tolist() # 去除重复字符和blank标记 result [] prev None for pid in pred_ids: if pid ! prev and pid ! 0: # 0通常是blank result.append(idx_to_char[pid]) prev pid print(识别结果:, .join(result))这段代码的关键在最后一步。CTC输出的是时间步上的概率分布比如输出长度是20每个位置上的分类结果是一个类别编号。贪心解码先取每个位置最大概率的类别然后做两步后处理合并连续重复字符去掉blank标记。blank是CTC引入的特殊类别代表当前时间步没有有效字符输出通常设在类别0的位置。如果这两步不做识别结果里会出现大量重复字符和多余符号。修改char_map文件时要确认blank对应的是类别0还是最后一个类别不同实现的约定不一样。3.3 刚拿到资源时的确认清单跑通推理后建议花五分钟确认系统状态。先拿测试集里一张清晰的图片确认识别结果完全正确再拿一张带噪声或模糊的图片确认模型不会直接崩掉。这样能在做训练之前排除数据或代码层面的隐藏问题。4. 从公开数据集到自制数据训练一套自己的识别模型4.1 理解项目使用的数据集格式这套系统的数据加载器通常采用最直接的格式一个txt文件里每行写图片路径和对应的标签文本用制表符分隔。这种格式不需要额外的标注工具容易手写也和常见的OCR开源数据集格式兼容。data/train/001.jpg 你好世界 data/train/002.jpg ABCD1234 data/train/003.jpg 深度学习OCR路径与标签之间用tab分隔标签里不含tab和换行。如果标签是中文文件需要保存为UTF-8编码Windows下用记事本编辑时要留意编码格式。路径推荐写相对路径这样换一台电脑也不用改配置。4.2 用开源数据集快速验证训练链路训练之前可以先拿公开的OCR数据集做一次快速验证。常用的是ICDAR 2003或合成中文数据集如果网络下载不便可以自己生成一批合成数据。from PIL import Image, ImageDraw, ImageFont import random, os # 生成100张中文文字图片字体需要指定系统中存在的中文字体路径 font_path C:/Windows/Fonts/simhei.ttf # Windows下的黑体 font ImageFont.truetype(font_path, 32) os.makedirs(data/train, exist_okTrue) samples [] for i in range(100): text .join(random.choices(深度学习文字识别系统PyTorch实战0123456789, krandom.randint(4, 10))) img Image.new(L, (32 * len(text), 32), color255) # 粗略估算宽度 draw ImageDraw.Draw(img) draw.text((5, 0), text, fontfont, fill0) # 加一点随机噪声 img img.point(lambda x: 0 if x random.randint(80, 120) else 255) fname fdata/train/{i:04d}.jpg img.save(fname) samples.append(f{fname}\t{text}\n) with open(data/train.txt, w, encodingutf-8) as f: f.writelines(samples) print(合成数据生成完成)这段代码模拟了训练数据的生成逻辑。图片画布高度固定为32像素宽度按字符数乘以32估算绘制文字后做二值化处理。字体路径在Windows和Linux下不一样Ubuntu一般放在/usr/share/fonts/truetype/wqy/wqy-microhei.ttc。用合成数据训练的好处是标签完全可控能快速验证数据加载、模型训练、损失下降这条链路有没有问题。4.3 训练启动与参数调优数据准备好后启动训练的入口和常见超参数如下python train.py --config config/config.yaml --train_list data/train.txt --val_list data/val.txttrain.py的核心训练循环里有几个关键操作值得细看# 数据加载器batch size可以根据显存调整 train_loader DataLoader(train_dataset, batch_size64, shuffleTrue, num_workers4) # CTC损失函数 criterion nn.CTCLoss(blank0, zero_infinityFalse) # 优化器常用Adam学习率初始1e-3 optimizer optim.Adam(model.parameters(), lr1e-3) for epoch in range(total_epochs): for batch_idx, (images, labels, label_lengths) in enumerate(train_loader): images images.to(device) outputs model(images) # [batch_size, T, num_classes] outputs outputs.log_softmax(2) # CTC Loss要求log概率 # 计算CTC损失PyTorch内部会自动处理对齐问题 loss criterion(outputs.transpose(0, 1), labels, torch.tensor([outputs.size(1)] * images.size(0), dtypetorch.int), label_lengths) optimizer.zero_grad() loss.backward() optimizer.step()CTCLoss的输入需要特别留意。PyTorch的要求是输入序列维度放在第一维所以outputs要转置成[T, batch_size, num_classes]。labels是拼接后的所有标签索引序列label_lengths记录每条样本的真实字符长度。CTC分子之间的对齐是自动计算的这在代码里体现为一行调用但原理上它是CTC算法里最核心的部分。如果对这部分理解不透彻建议把论文里CTC的推导过程看一遍答辩时被问到损失函数怎么计算对齐时就能从容作答。4.4 训练过程中的观察要点训练时主要看两个指标loss值和验证集准确率。loss下降说明模型在学到东西但不代表最终效果一定好还要看验证集上具体哪些字符错了。中文场景里常见的错误集中在形近字比如日和目、己和已这类错误即使在训练集上准确率很高也会出现因为图像特征本身接近。遇到这种情况可以增加对应样本的数量或者在数据增强里加入弹性形变。深度学习正则化在PyTorch代码里的落地方式很简单常见做法是在优化器里加weight_decay参数实践发现设置0.0001到0.001之间对OCR任务有稳定的正则效果。5. 训练和部署中的避坑记录五个常见问题与排查方法5.1 CUDA版本不匹配导致PyTorch无法调用GPU现象是程序报错AssertionError: Torch not compiled with CUDA enabled或者NVIDIA GeForce RTX 30XX with CUDA capability sm_86 is not compatible with the current PyTorch installation。原因通常是PyTorch安装的wheel版本和本机CUDA驱动不匹配或者是安装了CPU版PyTorch却试图用GPU。解决方式是先用nvidia-smi查看驱动支持的CUDA版本然后去PyTorch官网用匹配的--index-url参数重新安装。安装后立刻用torch.cuda.is_available()验证不要等到训练跑一半才发现。5.2 CTC Loss的blank索引设错现象是训练loss正常下降但推理输出结果末尾多出大量重复的无意义字符或者预测结果整体错位。原因可能是把blank设成了num_classes - 1但代码里解码时按0来过滤。不同实现里blank可以设在0也可以设在最后一个索引关键是训练时的blank位置和解码时的blank过滤位置必须一致。排查方法是打印一次模型的输出张量看logits在哪个索引上的值最高对比自己的配置是否正确。5.3 图像Resize导致文字宽高比失真现象是训练集上loss很低但验证集和实际测试时识别率明显下降尤其是长文本。原因是data_loader里如果直接把所有图resize到固定尺寸而不管原始宽高比文字会被压扁或拉长特征分布被破坏。解决方式是在预处理阶段先按高度比例缩放宽度再对宽度方向做padding到固定长度。常见做法是设置最大宽度为256不足部分补白边超过部分做等比缩小然后居中。这个预处理逻辑要同时用在训练、验证和推理三个阶段否则数据分布不一致效果会莫名下降。5.4 训练时显存溢出现象是运行train.py后报错CUDA out of memory。原因通常是batch size设得太大。解决方式第一反应是调小batch size比如从64降到32或16。但要注意batch size变化会影响梯度更新频率所以调小batch size时可以同步把学习率调低比如从1e-3降到5e-4。如果显存仍然不足检查一下代码里是否同时保存了多个中间变量或者把数据加载的num_workers调低有时候数据加载进程本身也会占用显存。用torch.cuda.empty_cache()在每次验证后清一次缓存也能缓解。5.5 训练集和推理时使用的字符集合不一致现象是推理阶段报IndexError: index out of range或者输出一堆乱码。原因是在合成数据时用了一个字符表训练时也是这个字符表但后来推理时换了另一个char_map.json两者的映射顺序不一样。解决方式是训练完成后把训练用的char_map.json备份一份推理时必须加载同一个文件。修改字符表后必须重新训练模型不能直接用旧权重。这个坑非常隐蔽因为报错不一定在训练时出现往往到现场演示时才发现输出全是乱码。6. 模型导出与无框架推理从PyTorch权重到可交付的识别引擎答辩和项目交付时经常需要现场演示。如果每次都依赖Python环境里的PyTorch才能识别换一台没装环境的电脑就麻烦了。比较稳妥的做法是把模型导出为ONNX格式再用ONNX Runtime在纯Python环境下推理这样不需要安装PyTorch也能运行。下面是一个导出和推理验证的完整流程。# 导出ONNX模型 import torch from models.crnn import CRNN # 加载训练好的权重 model CRNN(img_height32, num_classeslen(char_map)) model.load_state_dict(torch.load(checkpoints/model_best.pth, map_locationcpu)) model.eval() # 构造一个尺寸为 [1, 1, 32, 128] 的输入高度固定32宽度128按实际情况改 dummy_input torch.randn(1, 1, 32, 128) torch.onnx.export( model, dummy_input, ocr_model.onnx, input_names[input], output_names[output], dynamic_axes{input: {0: batch, 3: width}, output: {0: batch, 1: time}}, opset_version11 ) print(ONNX导出完成)导出时设了动态轴batch和width维度分别定义了动态范围这样传入任意宽度的图片都能识别。ONNX Runtime推理时输入需要先做同样的预处理——灰度图、高度缩放32、宽度等比缩放、归一化然后用onnxruntime.InferenceSession加载模型运行。实际部署时有个常见做法是把预处理、推理和后处理封装成一个类。这样一个干净的接口在答辩演示和工程交付上都很加分。封装时的关键点是后处理这段逻辑要比训练阶段更健壮如果输出的时间步长度和实际字符数不一致要去重逻辑有兜底避免空列表导致程序报错。训练时解码可以粗糙一点但交付时解码必须稳定。从那以后我每次训练完一套OCR模型都会强制走一遍导出ONNX再到新环境推理的全流程确认离开训练环境也能跑通再算数。这套基于深度学习的文字识别系统做课程设计和毕业设计是完全够用的尤其适合需要同时展示原理和工程能力的场景。把检测、识别链路拆开讲清楚再配合本地可跑的推理演示答辩时底气会足很多。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

使用 claude-howto 的 blog-draft 技能与草稿模板,系统化产出高质量技术博客

使用 claude-howto 的 blog-draft 技能与草稿模板,系统化产出高质量技术博客

教程文档 【免费下载链接】claude-howto A visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value. 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto 点…

2026/10/11 10:25:10 阅读更多 →
Excel自动评分:用LOOKUP和IF函数实现体育成绩折算自动化

Excel自动评分:用LOOKUP和IF函数实现体育成绩折算自动化

简介:这份资源是一份面向体育教师及学校教务人员的Excel实用教程文档,聚焦体育测试成绩换算这一高频痛点,帮助读者用公式与函数替代人工比对,降低错漏率。文档围绕学生成绩空表搭建、跳远与跳绳评分标准表制作、LOOKUP近似匹配与I…

2026/10/11 10:25:10 阅读更多 →
Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比

Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比

Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比 【免费下载链接】Legendary_OSINT A list of OSINT tools & resources for (fraud-)investigators, CTI-analysts, KYC, AML and more. 项目地址: https://gitcode.com/GitHub_Trending/le/Legendary_OSINT…

2026/10/11 10:25:10 阅读更多 →

最新新闻

Linux C++符号混淆实战:从符号泄露到崩溃还原

Linux C++符号混淆实战:从符号泄露到崩溃还原

上个月处理一个发布版Linux软件被逆向的排查,第一次动手就发现一个很扎心的现象:那个C项目没做任何符号层面的处理,对手一条nm命令下来,整个项目的内部函数名、类名、全局变量全部原样躺在那里。软件里有一块自研的核心算法&#…

2026/10/11 13:08:48 阅读更多 →
MFC下载器开发实战:WinInet、进度条与自绘界面

MFC下载器开发实战:WinInet、进度条与自绘界面

简介:这是一份MFC单文档/对话框框架下的文件下载工程源码包,面向Win32桌面应用初学者与需要实现HTTP下载、进度反馈和自定义界面的C开发者。包内包含完整的工程文件、界面位图资源、说明文档及编译生成文件,涵盖CInternetSession/CHttpFile的…

2026/10/11 13:08:48 阅读更多 →
VS2019 MFC双人五子棋实战:编译环境配置与核心代码解析

VS2019 MFC双人五子棋实战:编译环境配置与核心代码解析

简介:基于MFC框架的双人五子棋完整工程,已配好VS2019编译环境,适合有一定C基础、正在学习Windows界面编程或博弈算法实现的开发者。程序使用纯图形界面,支持黑白双方轮流落子、自动判断胜负、悔棋,以及棋局的保存与打开…

2026/10/11 13:08:48 阅读更多 →
BWO-KELM预测:白鲸优化调参提升KELM泛化能力

BWO-KELM预测:白鲸优化调参提升KELM泛化能力

简介:本资源是一套基于MATLAB实现的智能优化算法与机器学习融合的回归预测方案,面向高校研究生、科研人员及工程技术人员,解决小样本非线性回归建模中模型参数调优难、泛化能力弱等实际问题。压缩包共6个文件(4个核心m脚本、1个加…

2026/10/11 13:08:48 阅读更多 →
商品评论情感分析毕业设计:Python数据清洗到GUI模型部署全流程

商品评论情感分析毕业设计:Python数据清洗到GUI模型部署全流程

简介:一套基于Python的机器学习商品评论情感分析毕业设计完整项目,采用SVM与LSTM算法,并提供GUI可视化界面,适合计算机相关专业学生完成大作业、毕业设计及项目实战练习。项目经导师指导并评审通过,评分98分&#xff0…

2026/10/11 13:08:48 阅读更多 →
ImageJ Windows版从闪退到批量出图:内存设置、宏批处理与插件安装全攻略

ImageJ Windows版从闪退到批量出图:内存设置、宏批处理与插件安装全攻略

简介:这款ImageJ Windows版本采用64位Java 8捆绑,开箱即用,适合生物医学、材料科学等领域研究人员进行图像分析与测量。资源共430个文件,压缩包约47.72MB,以ijm宏、dll动态库、jar插件和java源码为主,同时内…

2026/10/11 13:07:48 阅读更多 →

日新闻

流感时间序列预测实战: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 阅读更多 →