使用 R 结合 Tesseract OCR 解析验证码

news/2025/3/16 22:32:11/文章来源:https://www.cnblogs.com/ocr12/p/18775848
  1. 环境准备
    1.1 安装 R
    如果尚未安装 R,可以从 CRAN 官方网站 下载并安装。
    安装完成后,使用以下命令检查是否成功安装:

r

R --version
1.2 安装 Tesseract OCR
macOS(Homebrew)

brew install tesseract
Linux(Ubuntu)
bash

sudo apt update
sudo apt install tesseract-ocr
Windows
从 Tesseract GitHub 下载并安装。

安装完成后,检查 Tesseract 是否可用:

bash

tesseract --version
1.3 安装 R 语言的 Tesseract 库
在 R 环境中运行:

r

install.packages("tesseract")
2. 代码实现
创建 captcha_reader.R 并写入以下代码:

r

library(tesseract)
library(magick)

读取验证码图片

image_path <- "captcha.png" # 替换为你的验证码图片路径
image <- image_read(image_path)

预处理:转换为灰度图,提高对比度

image <- image_convert(image, colorspace = "gray")
image <- image_modulate(image, brightness = 120, saturation = 0)

OCR 识别

ocr_engine <- tesseract("eng") # 设定为英文 OCR
text <- ocr(image, engine = ocr_engine)

输出识别结果

cat("识别出的验证码:", text, "\n")
3. 代码解析
3.1 读取图像
r

image <- image_read(image_path)
使用 magick 包读取验证码图像。
3.2 进行图像预处理
r

image <- image_convert(image, colorspace = "gray")
image <- image_modulate(image, brightness = 120, saturation = 0)
将图像转换为灰度模式,提高字符对比度。
3.3 进行 OCR 识别
r

ocr_engine <- tesseract("eng")
text <- ocr(image, engine = ocr_engine)
使用 tesseract 进行 OCR 解析,并指定 eng 语言。
3.4 输出识别结果
r

cat("识别出的验证码:", text, "\n")
4. 运行程序
确保 captcha.png 图片存在于相同目录下,然后在 R 环境中运行:

r

source("captcha_reader.R")
示例输出:

makefile

识别出的验证码: X7G9H
5. 提高 OCR 识别率
5.1 选择不同的 Tesseract PSM 模式

ocr_engine <- tesseract("eng", options = list(tessedit_pageseg_mode = 6))
PSM 6 适用于单行验证码,提高准确率。
5.2 限制识别字符集

ocr_engine <- tesseract("eng", options = list(tessedit_char_whitelist = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
让 Tesseract 只识别数字和大写字母,提高精确度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/900025.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React+Next.js+MaterialUI+Toolpad技术栈学习——安装

今天跟大家分享一个React+Next.js+MaterialUI技术栈的前端框架Toolpad。相关资源MaterialUI Toolpad框架效果安装运行安装命令npx create-toolpad-app@latest your-app cd your-app npm run dev文件结构 无身份认证 ├── app │ ├── (dashboard) │ │ ├── layou…

测试驱动开发(TDD)浅析

测试驱动开发(TDD:Test Driven Development)是敏捷开发中的一项核心实践,推崇通过测试来驱动整个开发的进行。TDD有别于传统“先编码,后测试”的开发过程,而是要求在编写业务代码之前,先编写测试用例。TDD的概念大致在上世纪90年代随着极限编程(XP:Extreme Programmin…

(18).命令模式

命令模式 命令模式的核心思想是将请求封装为个对象,将其作为命令发起者和接收者的中介,而抽象出来的命令对象又使得能够对一系列请求进行操作,如对请求进行排队,记录请求日志以及支持可撤销的操作等。命令模式参与者:◇命令的执行者(接收者Receiver):它单纯的只具体实现了功…

学嵌入式C语言,看这一篇就够了(5)

C语言的运算符 学习编程语言,应该遵循“字-->词-->句-->段--->章”,对于一条有意义的语句而言,是离不开标点符号的运算符指明要进行的运算和操作,操作数是指运算符的操作对象,根据运算符操作数的数目不同,C语言标准把运算符分为三种:单目运算符(一元运算符…

20242313 2024-2025-2 《Python程序设计》实验一报告

20242313 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级:2423 姓名:曾海鹏 学号:20242313 实验教师:王志强 实验日期:2025年3月16日 必修/选修:公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并…

nn.Embedding()函数详解

nn.Embedding()函数详解 nn.Embedding()函数:随机初始化词向量,词向量在正态分布N(0,1)中随机取值 输入: torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None) num…

htb Authority

端口扫描 nmap -sC -sV -p- -Pn -T4 10.10.11.222 Starting Nmap 7.92 ( https://nmap.org ) at 2024-10-04 19:42 CST Nmap scan report for 10.10.11.222 (10.10.11.222) Host is up (0.40s latency). Not shown: 65506 closed tcp ports (reset) PORT STATE SERVICE …

蓝桥杯14届省B

蓝桥杯14届省赛B组A:int a[105]; int day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//记录每个月有多少天 set<int> st;//记录不重复的日期void check(int mm,int dd){if (mm>12||mm<1||dd<1||dd>day[mm]) return;else st.insert(mm*100+dd);//st存日期 …

docker 安装 oracle database 问题记录

pre本地docker (WSL)安装运行 Oracle1. 镜像处理参考链接:https://www.cnblogs.com/wuchangsoft/p/18344847 oracle 镜像获取:https://container-registry.oracle.com/ords/f?p=113:10:::::: (Oracle官网,由于部分问题导致直接pull无法拉取) 阿里云,参考链接里有个个人19…

20242103 实验一《Python程序设计》实验报告

20242103 《Python程序设计》实验1报告 课程:《Python程序设计》 班级: 2421 姓名: 李雨虓 学号:20242103 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容: 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试…