PHP 结合 Tesseract OCR 解析验证码

news/2025/3/16 22:46:16/文章来源:https://www.cnblogs.com/ocr12/p/18775868
  1. 环境准备
    1.1 安装 PHP
    如果尚未安装 PHP,可以使用以下方式安装:

Windows
从 PHP 官方网站 下载并安装。

macOS(Homebrew)
bash

brew install php
Linux(Ubuntu)
bash

sudo apt update
sudo apt install php-cli php-xml
检查 PHP 是否安装成功:

bash

php -v
1.2 安装 Tesseract OCR
macOS(Homebrew)
bash

brew install tesseract
Linux(Ubuntu)
bash
sudo apt update
sudo apt install tesseract-ocr
Windows
从 Tesseract GitHub 下载并安装。

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

bash

tesseract --version
2. 代码实现
创建 captcha_reader.php 并写入以下代码:

php

  1. 代码解析
    3.1 图像预处理
    php

exec("convert $captchaImage -colorspace Gray -threshold 50% $processedImage");
使用 ImageMagick 将验证码转换为灰度,并进行二值化处理,以提高 OCR 识别率。
3.2 OCR 识别
php

$output = shell_exec("tesseract $processedImage stdout");
调用 tesseract 命令行工具进行验证码识别,并获取输出结果。
3.3 输出识别结果
php

echo "识别出的验证码: " . trim($output) . "\n";
移除 OCR 结果中的多余空格,并输出验证码。
4. 运行程序
确保 captcha.png 图片存在于相同目录下,然后在终端运行:

bash

php captcha_reader.php
示例输出:

makefile

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

$output = shell_exec("tesseract $processedImage stdout --psm 6");
PSM 6 适用于单行验证码,提高准确率。
5.2 限制识别字符集
php

$output = shell_exec("tesseract $processedImage stdout -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
让 Tesseract 只识别数字和大写字母,提高精确度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/900030.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运行、调试技能;(编写书中的程序,并进行调试…