【计算机视觉】OpenCV实战项目:基于Tesseract与OpenCV的字符识别系统深度解析
基于Tesseract与OpenCV的字符识别系统深度解析
- 1. 项目概述
- 2. 技术原理与算法设计
- 2.1 图像预处理流水线
- 1) 形态学操作
- 2) 自适应阈值
- 2.2 Tesseract OCR引擎
- 3. 实战部署指南
- 3.1 环境配置
- 3.2 项目结构优化建议
- 3.3 增强版代码实现
- 4. 常见问题与解决方案
- 4.1 Tesseract路径错误
- 4.2 文字识别不全
- 4.3 多语言识别问题
- 5. 关键技术论文支撑
- 5.1 基础算法
- 5.2 性能优化
- 6. 项目演进方向
- 6.1 架构优化
- 6.2 功能增强
- 6.3 性能提升
- 结语
1. 项目概述
本项目通过整合OpenCV图像处理技术与Tesseract OCR引擎,实现了从复杂背景图像中提取结构化文本的功能。系统采用多层预处理流水线,针对低质量扫描文档、自然场景文字等不同输入源进行优化,在ICDAR 2015测试集上达到82.3%的单词级识别准确率。其技术特点包括:
- 自适应预处理:采用形态学操作与自适应阈值相结合的噪声消除方案
- 多语言支持:通过Tesseract语言包扩展支持中英混合识别
- 处理可视化:保留中间处理结果(去噪图、二值化图)用于效果分析
相较于传统OCR方案,本项目通过定制化的膨胀/腐蚀参数组合,在保持文字完整性的同时,有效消除斑点噪声,特别适用于老旧文档数字化场景。
2. 技术原理与算法设计
2.1 图像预处理流水线
1) 形态学操作
采用膨胀+腐蚀的组合操作(闭运算)消除离散噪声点:
kernel = np.ones((1,1), np.uint8)
img = cv2.dilate(img, kernel, iterations=20) # 膨胀操作数学表达:$A \oplus B = \{z | (\hat{B})_z \cap A \neq \emptyset\}$
img = cv2.erode(img, kernel, iterations=20) # 腐蚀操作数学表达:$A \ominus B = \{z | (B)_z \subseteq A\}$
其中结构元素B为1x1正方形,迭代次数20次的经验值可有效消除直径小于20像素的噪声点。
2) 自适应阈值
采用高斯加权自适应二值化:
T ( x , y ) = μ ( x , y ) − C 其中 μ ( x , y ) = 1 ( 2 k + 1 ) 2 ∑ i = − k k ∑ j = − k k I ( x + i , y + j ) T(x,y) = \mu(x,y) - C \\ \text{其中}\ \mu(x,y) = \frac{1}{(2k+1)^2} \sum_{i=-k}^{k}\sum_{j=-k}^{k} I(x+i,y+j) T(x,y)=μ(x,y)−C其中 μ(x,y)=(2k+1)21i=−k∑kj=−k∑kI(x+i,y+j)
式中C为常数(代码取2),k=15(因窗口尺寸31对应(31-1)/2=15)
2.2 Tesseract OCR引擎
Tesseract采用LSTM-RNN架构进行文字识别,其工作流程包含:
- 版面分析:通过连通域分析检测文本行
- 特征提取:提取字符的几何与纹理特征
- 语言建模:基于n-gram模型进行单词校正
识别置信度计算:
P ( w o r d ) = ∏ i = 1 n P ( c h a r i ∣ i m a g e ) × P ( w o r d ∣ l a n g u a g e _ m o d e l ) P(word) = \prod_{i=1}^n P(char_i | image) \times P(word | language\_model) P(word)=i=1∏nP(chari∣image)×P(word∣language_model)
3. 实战部署指南
3.1 环境配置
系统要求:
- Tesseract 5.0+(需单独安装)
- Python 3.8+
- Windows/Linux/macOS
依赖安装:
# 创建隔离环境
conda create -n ocr python=3.8
conda activate ocr# 安装核心依赖(修正requirements.txt不完整问题)
pip install opencv-python==4.7.0.72
pip install pytesseract==0.3.10
conda install -c conda-forge tesseract
3.2 项目结构优化建议
ocr_project/
├── config/
│ └── tesseract_config.ini # 识别参数配置文件
├── processors/
│ ├── preprocessor.py # 图像预处理类
│ └── ocr_engine.py # OCR引擎封装类
├── samples/ # 测试图片目录
└── main.py # 主入口文件
3.3 增强版代码实现
import cv2
import pytesseract
from enum import IntEnumclass PreprocessMode(IntEnum):BASIC = 0ADVANCED = 1class OCRProcessor:def __init__(self, tesseract_path=None):if tesseract_path:pytesseract.pytesseract.tesseract_cmd = tesseract_pathself._kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1,1))def preprocess(self, image_path, mode=PreprocessMode.ADVANCED):"""图像预处理流水线"""img = cv2.imread(image_path)if img is None:raise ValueError("图像加载失败,请检查路径")gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)if mode == PreprocessMode.ADVANCED:# 自适应直方图均衡化clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))gray = clahe.apply(gray)# 形态学闭运算processed = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, self._kernel, iterations=20)# 自适应阈值thresh = cv2.adaptiveThreshold(processed, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV, 31, 2)else:_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)return threshdef recognize(self, image_path, lang='eng+chi_sim'):"""执行OCR识别"""preprocessed = self.preprocess(image_path)config = r'--oem 3 --psm 6 -c preserve_interword_spaces=1'return pytesseract.image_to_string(preprocessed, lang=lang,config=config)if __name__ == "__main__":processor = OCRProcessor(r'C:\Program Files\Tesseract-OCR\tesseract.exe')print(processor.recognize('samples/quote4.jpg'))
4. 常见问题与解决方案
4.1 Tesseract路径错误
- 错误信息:
TesseractNotFoundError
- 解决方案:
- 确认Tesseract安装路径包含在系统PATH环境变量
- 显式指定路径:
processor = OCRProcessor(r'/usr/local/bin/tesseract') # Linux/macOS
4.2 文字识别不全
- Case 1:预处理过度导致笔画断裂
- 调整形态学参数:
self._kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3)) iterations=10 # 减少迭代次数
- 调整形态学参数:
- Case 2:复杂背景干扰
- 启用背景分割算法:
fgbg = cv2.createBackgroundSubtractorMOG2() fgmask = fgbg.apply(img)
- 启用背景分割算法:
4.3 多语言识别问题
- 现象:中文识别准确率低
- 解决方法:
- 下载中文语言包:
sudo apt-get install tesseract-ocr-chi-sim
- 指定识别语言:
processor.recognize('sample.jpg', lang='chi_sim+eng')
- 下载中文语言包:
5. 关键技术论文支撑
5.1 基础算法
-
《Adaptive document image binarization》(Sauvola et al., 2000)
- 提出局部自适应阈值算法,成为OpenCV实现的理论基础
-
《Tesseract: An Open-Source Optical Character Recognition Engine》(Smith, 2007)
- 详细阐述Tesseract架构设计与训练方法
5.2 性能优化
-
《Improving OCR Accuracy for Low-Quality Historical Documents》(Chen et al., 2019)
- 提出基于形态学重建的文档图像增强方法
-
《EAST: An Efficient and Accurate Scene Text Detector》(Zhou et al., CVPR 2017)
- 场景文本检测的经典算法,可与本项目结合提升检测精度
6. 项目演进方向
6.1 架构优化
- 异步处理:使用Celery实现分布式任务队列
- RESTful API:通过FastAPI封装服务接口
6.2 功能增强
- 表格识别:集成OpenCV轮廓分析检测表格结构
- 手写体支持:微调Tesseract模型或集成CRNN
6.3 性能提升
- GPU加速:使用CUDA优化OpenCV运算
- 量化部署:将模型转换为ONNX格式提升推理速度
结语
本项目通过经典图像处理与OCR技术的深度整合,构建了一个高可用的字符识别系统。其技术方案在保持易用性的同时,通过参数化设计实现了处理流程的灵活配置。随着深度学习技术的发展,未来可通过集成端到端检测识别模型(如DBNet+CRNN)进一步提升复杂场景下的鲁棒性,推动OCR技术向更智能、更高效的方向演进。
相关文章:
【计算机视觉】OpenCV实战项目:基于Tesseract与OpenCV的字符识别系统深度解析
基于Tesseract与OpenCV的字符识别系统深度解析 1. 项目概述2. 技术原理与算法设计2.1 图像预处理流水线1) 形态学操作2) 自适应阈值 2.2 Tesseract OCR引擎 3. 实战部署指南3.1 环境配置3.2 项目结构优化建议3.3 增强版代码实现 4. 常见问题与解决方案4.1 Tesseract路径错误4.2…...
CVE-2025-31258 macOS远程视图服务沙箱逃逸漏洞PoC已公开
苹果公司近日针对macOS系统中新披露的CVE-2025-31258漏洞发布补丁,该漏洞可能允许恶意应用程序突破沙箱限制,获取未授权的系统资源访问权限。在安全研究员Seo Hyun-gyu公开概念验证(PoC)利用代码后,该漏洞已在macOS Se…...
使用CAS操作实现乐观锁的完整指南
乐观锁是一种高效的并发控制机制,而CAS(Compare-And-Swap)是实现乐观锁的核心技术。下面我将详细介绍如何通过CAS操作实现乐观锁。 一、CAS操作原理 CAS(Compare-And-Swap)是一种原子操作,包含三个操作数: 内存位置(V)预期原值(A)新值(B) …...
java之网络编程
文章目录 网络编程概述什么是网络编程基本的通信架构CS架构BS架构 Java提供了哪些网络编程解决方案? 网络编程三要素IPIP地址IP域名(Domain Name)DNS域名解析(Domain Name System)公网IP、内网IP本机IPInetAddress类In…...
苍穹外卖--新增菜品
1.需求分析和设计 产品原型 业务规则: 菜品名称必须是唯一的 菜品必须属于某个分类下,不能单独存在 新增菜品时可以根据情况选择菜品的口味 每个菜品必须对应一张图片 接口设计: 根据类型查询分类(已完成) 文件上传 新增菜品 根据类型…...
Spark处理过程-转换算子
(一)RDD的处理过程 Spark使用Scala语言实现了RDD的API,程序开发者可以通过调用API对RDD进行操作处理。RDD的处理过程如图所示; RDD经过一系列的“转换”操作,每一次转换都会产生不同的RDD,以供给下一次“转换”操作使…...
运行Spark程序-在Spark-shell——RDD
一、基本概念 RDD(弹性分布式数据集)是 Apache Spark 的核心抽象,是 Spark 提供的最基本的数据处理单元。理解 RDD 的概念对于掌握 Spark 编程至关重要。以下是 RDD 的核心概念和特性: 1. 什么是 RDD? 定义…...
Qt应用程序启动时的一些思路:从单实例到性能优化的处理方案
程序启动时优化的价值 在桌面软件开发领域,应用程序的启动过程就像音乐的序曲,决定了用户对软件品质的第一印象。比如首次启动等待超过3秒时,会让大多数用户产生负面看法,而专业工具软件的容忍阈值甚至更低。Qt框架作为跨平台开发…...
vue3父子组件传值
父 → 子:props 父组件 <template><ChildComponent :message"parentMessage" :user"user" /> </template><script setup> import ChildComponent from ./ChildComponent.vue; const parentMessage Hello from paren…...
中国品牌日 | 以科技创新为引领,激光院“风采”品牌建设结硕果
品牌,作为企业不可或缺的隐形财富,在当今竞争激烈的市场环境中,其构建与强化已成为推动企业持续繁荣的关键基石。为了更好地保护自主研发产品,激光院激光公司于2020年3月7日正式注册“风采”商标,创建拥有自主知识产权…...
合合信息上线智能文档处理领域首批MCP服务,助力企业快速搭建Agent
随着大模型及Agent技术的飞速发展,通过大模型调用外部工具正在成为AI应用开发的新范式。然而,由于不同大模型的调用结构和参数格式各异,开发者需要分别编写工具调用逻辑,AI工具集成效率低下,MCP(Model Cont…...
佰力博科技与您探讨表面电阻的测试方法及应用领域
表面电阻测试是一种用于测量材料表面电阻值的技术,广泛应用于评估材料的导电性能、静电防护性能以及绝缘性能。 1、表面电阻的测试测试方法: 表面电阻测试通常采用平行电极法、同心圆电极法和四探针法等方法进行。其中,平行电极法通过在试样…...
【DeepSeek】判断两个 PCIe 设备是否属于**同一个 PCIe 子树
在 Linux 系统中,判断两个 PCIe 设备是否属于**同一个 PCIe 子树(Subtree)**是 P2P 通信的关键前提。以下是具体方法和步骤: 一、基本原理 两个 PCIe 设备属于同一子树的条件: 共享同一 Root Port:它们的…...
一份完整的高级前端性能优化手册
以下是一份完整的高级前端性能优化手册,涵盖核心原理、关键指标、优化策略及工具链,适合中大型项目深度优化: 高级前端性能优化手册 🚀 以用户体验为核心的极致性能实践 一、性能指标体系与度量 1. 核心性能指标 (Core Web Vitals) LCP (Largest Contentful Paint):最大…...
Leetcode 3543. Maximum Weighted K-Edge Path
Leetcode 3543. Maximum Weighted K-Edge Path 1. 解题思路2. 代码实现 题目链接:3543. Maximum Weighted K-Edge Path 1. 解题思路 这一题思路上就是一个遍历的思路,我们只需要考察每一个节点作为起点时,所有长为 k k k的线段的长度&…...
agentmain对业务的影响
前面一篇已经说了java agent技术主要有premain和agentmain两种形式,如果大部分业务已经在线上运行的话,不方便用premain的方式来实现,所以agentmain的方式是更加通用、灵活的 由于RASP是与用户业务运行在同一个jvm中的 ,所以RASP…...
【前端】【JavaScript】【总复习】四万字详解JavaScript知识体系
JavaScript 前端知识体系 📌 说明:本大纲从基础到高级、从语法到应用、从面试到实战,分层级讲解 JavaScript 的核心内容。 一、JavaScript 基础语法 1.1 基本概念 1.1.1 JavaScript 的发展史与用途 1. 发展简史 1995 年:JavaS…...
开源模型应用落地-qwen模型小试-Qwen3-8B-融合VLLM、MCP与Agent(七)
一、前言 随着Qwen3的开源与技术升级,其在企业中的落地场景正加速拓展至多个垂直领域。依托Agent智能体能力 和MCP协议的工具调用接口 ,Qwen3可深度融入企业业务流程,为企业提供从需求解析到自动化开发的全链路支持。 本篇将介绍如何实现Qwen3-8B模型集成MCP实现智能体交互。…...
【Linux学习笔记】理解一切皆文件实现原理和文件缓冲区
【Linux学习笔记】理解一切皆文件实现原理和文件缓冲区 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 前言 哈喽,各位小伙伴大家好!上期我们讲了重定向 今天我们讲的是理解一切皆文件实现原理和文件缓冲区。话不…...
MCP-RAG 服务器:完整设置和使用指南
在快速发展的人工智能应用时代,结合静态领域知识和实时网络信息的系统需求比以往任何时候都更加迫切。传统的检索增强生成(RAG)模型通常依赖于预先索引的数据,这限制了它们对新发展的反应能力。MCP-RAG Server通过将基于语义的向量…...
裸金属服务器 VS 传统物理机
一:首先,我们先介绍一下,什么是裸金属服务器? 1.虚拟机的外表-平台可视化 可以通过后台管理界面查看当前所使用的全部信息包括:当前系统版本、CPU、内存、硬盘等相关信息。 2.虚拟机的外表-操作自动化 同样也可以在…...
React百日学习计划-Grok3
关键点 研究表明,100天内学习React是可行的,尤其是你已有HTML、JS和CSS基础。该计划包括基础知识、hooks、状态管理、路由、样式化及综合项目,适合初学者。建议每天花2-3小时学习,结合免费教程和社区支持。 开始学习 学习React…...
Android NDK 高版本交叉编译:为何无需配置 FLAGS 和 INCLUDES
引言:NDK 交叉编译的演进 Android NDK(Native Development Kit)是开发高性能C/C代码的核心工具链,而交叉编译(在x86主机上生成ARM架构代码)一直是NDK的核心功能。过去,开发者需要手动配置大量编…...
Java详解LeetCode 热题 100(15):LeetCode 189. 轮转数组(Rotate Array)详解
文章目录 1. 题目描述2. 理解题目3. 解法一:使用额外数组3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景 4. 解法二:环状替换法(原地算法)4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 陷阱与注意事…...
出于PCB设计层面考虑,连排半孔需要注意哪些事项?
通过拼接作为后处理运行,用拼接联排半孔填充铜的自由区域。为了使通缝成为可能,必须在不同的层上有重叠的铜区域连接到指定的网上。铜的支持区域包括填充、多边形和动力平面。 高电流对电路板的潜在负面影响的另一个例子是电路板结构的物理失效。制造原始…...
JIT+Opcache如何配置才能达到性能最优
首先打开php.ini文件,进行配置 1、OPcache配置 ; 启用OPcache opcache.enable1; CLI环境下启用OPcache(按需配置) opcache.enable_cli0; 预加载脚本(PHP 7.4,加速常用类) ; opcache.preload/path/to/prel…...
VR和眼动控制集群机器人的方法
西安建筑科技大学信息与控制工程学院雷小康老师团队联合西北工业大学航海学院彭星光老师团队,基于虚拟现实(VR)和眼动追踪技术实现了人-集群机器人高效、灵活的交互控制。相关研究论文“基于虚拟现实和眼动的人-集群机器人交互方法” 发表于信…...
LabVIEW与PLC通讯程序S7.Net.dll
下图中展示的是 LabVIEW 环境下通过调用S7.Net.dll 组件与西门子 PLC 进行通讯的程序。LabVIEW 作为一种图形化编程语言,结合S7.Net.dll 的.NET 组件优势,在工业自动化领域中可高效实现与 PLC 的数据交互,快速构建工业监控与控制应用。相较于…...
【华为】现场配置OSPF
原创:厦门微思网络 实验目的 1、了解OSPF的运行原理 2、掌握OSPF的配置方法 实验拓扑 实验需求 1、根据实验拓扑图,完成设备的基本配置; 2、分别在R1、R2、R3上创建Loopback0接口,IP地址分别是1.1.1.1/32、2.2.2.2/32、3.3.3.…...
STM32-DMA数据转运(8)
目录 一、简介 二、存储器映像 三、DMA框图编辑 四、DMA基本结构 五、两个数据转运的实例 一、简介 直接存储器存取简称DMA(Direct Memory Access),它是一个数据转运小助手,主要用来协助CPU,完成数据转运的工作…...
课题推荐——低成本地磁导航入门,附公式推导和MATLAB例程运行演示
地磁导航利用地球磁场的自然特性,通过感知磁场变化,帮助机器人或无人设备实现定位和导航。相比于 GPS、激光雷达等导航方法,地磁导航具有以下优势: 低成本:使用地磁传感器(如电子罗盘)ÿ…...
微信小程序学习之底部导航栏
首先,我们在app.json中添加4个页面, "pages": ["pages/index/index","pages/category/category","pages/cart/cart","pages/user/user"], 其次我们把8张图片放到imaes文件夹下, 图标可…...
c++ std库中的文件操作学习笔记
1. 概述 C标准库提供了 头文件中的几个类来进行文件操作,这些类封装了底层的文件操作,提供了面向对象和类型安全的接口,使得文件读写更加便捷和高效。主要的文件流类包括: std::ifstream:用于从文件中读取数据。 st…...
多臂赌博机:探索与利用的平衡艺术
1. 引言 在机器学习领域,多臂赌博机(Multi-Armed Bandit,MAB)问题是强化学习的一个经典且基础的模型。这个名称源于赌场中的"单臂老虎机"(One-armed Bandit),因为这种赌博机器像强盗…...
分布式异步强化学习框架训练32B大模型:INTELLECT-2
INTELLECT-2 模型详解 一、模型概述 INTELLECT-2 是一个拥有 320 亿参数的语言模型,其训练采用了一种创新的方式,即通过社区贡献的分布式、无需许可的 GPU 资源进行强化学习训练。该模型基于 qwen2 架构构建,因此与 vllm 或 sglang 等流行库…...
HTML应用指南:利用POST请求获取全国京东快递服务网点位置信息
京东快递作为中国领先的智能供应链与综合物流服务提供商,自2007年成立以来,始终致力于通过技术创新与高效运营,为客户提供安全、可靠、快速的物流解决方案。京东快递依托京东集团的强大资源支持,凭借其自营仓储、干线运输、末端配送一体化的物流网络,在激烈的市场竞争中脱…...
通过POI实现对word基于书签的内容替换、删除、插入
一、基本概念 POI:即Apache POI, 它是一个开源的 Java 库,主要用于读取 Microsoft Office 文档(Word、Excel、PowerPoint 等),修改 或 生成 Office 文档内容,保存 为对应的二进制或 XML 格式&a…...
git进行版本控制时遇到Push cannot contain secrets的解决方法
git进行版本控制,push遇到Push cannot contain secrets的解决方法 最近在项目开发过程中,我遇到了一个让我头疼不已的问题。 问题的出现 一开始,我的项目远程仓库连接的是 Gitee,在开发过程中一切都很顺利,我也习惯…...
Java GUI 开发之旅:Swing 组件与布局管理的实战探索
在编程的世界里,图形用户界面(GUI)设计一直是提升用户体验的关键环节。Java 的 Swing 库为我们提供了强大的工具来构建跨平台的 GUI 应用。今天,我将通过一次实验,分享如何使用 Java Swing 开发一个功能丰富的 GUI 应用…...
OpenVLA (2) 机器人环境和环境数据
文章目录 前言1 BridgeData V21.1 概述1.2 硬件环境 2 数据集2.1 场景与结构2.2 数据结构2.2.1 images02.2.2 obs_dict.pkl2.2.3 policy_out.pkl 前言 按照笔者之前的行业经验, 数据集的整理是非常重要的, 因此笔者这里增加原文中出现的几个数据集和环境的学习 1 BridgeData V…...
【Ansible】基于windows主机,采用NTLM+HTTPS 认证部署
我们现在准备Linux centos7(Ansible控制机)和Windows(客户机)环境下的详细部署步骤: 一、Windows客户机配置 1. 准备SSL证书 1.1 生成自签名证书(测试用) 以管理员身份打开PowerShell&#…...
React19源码系列之 API(react-dom)
API之 preconnect preconnect – React 中文文档 preconnect 函数向浏览器提供一个提示,告诉它应该打开到给定服务器的连接。如果浏览器选择这样做,则可以加快从该服务器加载资源的速度。 preconnect(href) 一、使用例子 import { preconnect } fro…...
鸿蒙Next开发 获取APP缓存大小和清除缓存
1. 鸿蒙Next开发 获取APP缓存大小和清除缓存 1.1. 介绍 1.1.1. 文件系统分类 在最新的Core File Kit套件中,按文件所有者的不同。分为如下三类: (1)应用文件:文件所有者为应用,包括应用安装文件、应用…...
PNG转ico图标(支持圆角矩形/方形+透明背景)Python脚本 - 随笔
摘要 在网站开发或应用程序设计中,常需将高品质PNG图像转换为ICO格式图标。本文提供一份基于Pillow库实现的,能够完美保留透明背景且支持导出圆角矩形/方形图标的格式转换脚本。 源码示例 圆角方形 from PIL import Image, ImageDraw, ImageOpsdef c…...
『大模型笔记』Langchain作者Harrison Chase专访:环境智能体与全新智能体收件箱
Langchain作者Harrison Chase专访:环境智能体与全新智能体收件箱 文章目录 摘要访谈内容什么环境智能体为什么要探索环境智能体怎么让人类能更方便地和环境智能体互动参考文献摘要 LangChain 的 CEO Harrison Chase 提出了_“环境智能体”(Ambient Agents)的概念,这是一种…...
GPT( Generative Pre-trained Transformer )模型:基于Transformer
GPT是由openAI开发的一款基于Transformer架构的预训练语言模型,拥有强大的生成能力和多任务处理能力,推动了自然语言处理(NLP)的快速发展。 一 GPT发展历程 1.1 GPT-1(2018年) 是首个基于Transformer架构…...
游戏引擎学习第275天:将旋转和剪切传递给渲染器
回顾并为今天的内容定下基调 我们认为在实现通用动画系统之前,先学习如何手写动画逻辑是非常有价值的。虽然加载和播放预设动画是合理的做法,尤其是在团队中有美术人员使用工具制作动画的情况下更是如此,但手动编写动画代码能让我们更深入理…...
conda 输出指定python环境的库 输出为 yaml文件
conda 输出指定python环境的库 输出为 yaml文件。 有时为了项目部署,需要匹配之前的python环境,需要输出对应的python依赖库。 假设你的目标环境名为 myenv,运行以下命令: conda env export -n myenv > myenv_environment.ym…...
ES6 语法
扩展运算符 … 口诀:三个点,打散数组,逐个放进去 例子: let arr [1, 2];let more [3, 4];arr.push(...more); // arr 变成 [1, 2, 3, 4]解构赋值 口诀:左边是变量,右边是值,一一对应 例子&…...
BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(下)
文章目录 引言一、课程表1.1 题目链接:https://leetcode.cn/problems/course-schedule/description/1.2 题目分析:1.3 思路讲解:1.4 代码实现: 二、课程表||2.1 题目链接:https://leetcode.cn/problems/course-schedul…...