PHP使用OCR技术实现识别图片中的文字
在日常开发中,我们常常会遇到需要从图片中提取文字的需求,例如处理扫描件中的文字、验证码识别或者实现文档数字化管理。OCR(Optical Character Recognition,光学字符识别)技术可以帮助我们快速完成这项任务。今天就来聊聊,如何在 PHP 中实现 OCR 技术,从图片中提取文字。
一、什么是OCR技术
OCR 是一种通过图像处理技术从图片或扫描件中提取文字的技术,它可以将非结构化的图片内容转化为可编辑的文本。这种技术广泛应用于以下场景:
- 证件扫描识别(如身份证、驾照等)
- 文档数字化存储
- 图片验证码识别
- 发票、票据处理
二、PHP如何实现OCR
尽管 PHP 本身并不提供原生的 OCR 支持,但可以通过以下几种方式轻松实现 OCR:
- 使用开源 OCR 引擎,如 Tesseract-OCR。
- 调用第三方 OCR 服务(如百度智能云、阿里云、腾讯云等)。
下面我们通过 Tesseract-OCR 和百度 OCR API 两种方式,手把手教你实现图片文字识别功能。
三、方法一:使用 Tesseract-OCR
1. 什么是 Tesseract-OCR
Tesseract 是 Google 提供的一个开源 OCR 引擎,它支持多种语言的文字识别,包括中文,且可以通过简单的命令行或程序语言调用。
2. 环境准备
安装 Tesseract
根据你的系统类型安装 Tesseract:
Ubuntu/Linux
sudo apt update sudo apt install tesseract-ocr sudo apt install tesseract-ocr-chi-sim # 安装中文语言包
MacOS
brew install tesseract brew install tesseract-lang
Windows 前往 Tesseract 官方下载页面 下载并安装。
3. PHP与Tesseract集成
安装 PHP 扩展
通过 Composer 安装适配 Tesseract 的 PHP 库,例如 thiagoalessio/tesseract_ocr:
composer require thiagoalessio/tesseract_ocr
示例代码
以下是一个简单的图片文字识别示例:
lang('chi_sim'); // 简体中文
$result = $ocr->run();
echo "识别结果:n";
echo $result;
运行后,如果 test-image.png 中包含文字,Tesseract 将会提取并输出文本内容。
四、方法二:调用百度OCR API
如果你希望更快速、更精准的识别效果,使用云服务是个不错的选择。这里以 百度智能云 OCR 为例。
1. 注册百度智能云
- 访问 百度智能云 OCR 服务。
- 注册账号并创建应用,获取
API Key和Secret Key。
2. 安装 HTTP 请求库
推荐使用 Guzzle 发送 HTTP 请求。安装方式如下:
composer require guzzlehttp/guzzle
3. 获取 Access Token
百度 API 的访问需要使用 Access Token。以下是获取 Token 的代码:
post('https://aip.baidubce.com/oauth/2.0/token', [
'form_params' => [
'grant_type' => 'client_credentials',
'client_id' => $apiKey,
'client_secret' => $secretKey,
]
]);
$data = json_decode($response->getBody(), true);
return $data['access_token'] ?? null;
}
$apiKey = '你的API Key';
$secretKey = '你的Secret Key';
$token = getAccessToken($apiKey, $secretKey);
echo "Access Token: $tokenn";
4. 调用百度 OCR 接口
使用获得的 Token 调用 OCR 接口,完成图片文字识别:
post('https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic', [
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
],
'query' => [
'access_token' => $accessToken,
],
'form_params' => [
'image' => $imageData,
],
]);
$data = json_decode($response->getBody(), true);
return $data['words_result'] ?? [];
}
$imagePath = 'test-image.png';
$accessToken = '你的Access Token';
$result = recognizeText($imagePath, $accessToken);
echo "识别结果:n";
foreach ($result as $item) {
echo $item['words'] . "n";
}
五、比较两种方案
| 特点 | Tesseract-OCR | 百度智能云 OCR |
|---|---|---|
| 适用场景 | 本地离线识别 | 在线云服务,支持大规模处理 |
| 语言支持 | 多语言(需安装对应语言包) | 多语言自动识别 |
| 识别精度 | 精度一般,取决于图片质量 | 精度高,适合复杂场景 |
| 复杂度 | 安装配置简单 | 需联网,稍复杂 |
| 费用 | 免费 | 部分功能收费 |
六、总结
通过以上两种方案,PHP 开发者可以轻松实现 OCR 技术在项目中的应用:
- 对于小型、本地化需求,Tesseract 是一个不错的选择。
- 对于需要高精度、多功能的场景,云服务(如百度智能云 OCR)更为合适。
到此这篇关于PHP使用OCR技术实现识别图片中的文字的文章就介绍到这了,更多相关PHP OCR识别图片文字内容请搜索科站长以前的文章或继续浏览下面的相关文章希望大家以后多多支持科站长!
栏 目:PHP编程
下一篇:详解PHP中互斥锁库hyperf-wise-locksmith的使用
本文标题:PHP使用OCR技术实现识别图片中的文字
本文地址:https://www.fushidao.cc/wangluobiancheng/3386.html
您可能感兴趣的文章
- 08-25PHP编程经典书籍推荐,有哪些值得一读的佳作?
- 07-12如何高效学习并掌握从入门到精通的PHP编程教程?PHP编程入门到精通
- 07-12PHP数据流编程如何实现高效处理?PHP数据流处理优化技巧
- 07-12PHP编程初学者疑问解答,入门教程交流心得分享,php入门教程
- 07-12PHP编程如何融入儿童摄影文案创作?儿童摄影文案怎么写
- 07-12php编程教程30秒为何这么短,能学会php编程吗?零基础如何快速入门php
- 07-12php007编程日记心得挑战,php007编程日记有哪些疑问困扰同好
- 07-12PHP编程语言中常用的加密方式有哪些?各自适用场景如何?PHP加密算法有哪些
- 07-12php7内存编程如何高效管理内存优化性能,避免内存泄漏?php7内存管理优化
- 07-12如何有效利用PHP编程技巧去除字符串中的重复字符?php去除字符串重复字符
阅读排行
- 1PHP编程经典书籍推荐,有哪些值得一读的佳作?
- 2如何高效学习并掌握从入门到精通的PHP编程教程?PHP编程入门到精通
- 3PHP数据流编程如何实现高效处理?PHP数据流处理优化技巧
- 4PHP编程初学者疑问解答,入门教程交流心得分享,php入门教程
- 5PHP编程如何融入儿童摄影文案创作?儿童摄影文案怎么写
- 6php编程教程30秒为何这么短,能学会php编程吗?零基础如何快速入门php
- 7php007编程日记心得挑战,php007编程日记有哪些疑问困扰同好
- 8PHP编程语言中常用的加密方式有哪些?各自适用场景如何?PHP加密算法有哪些
- 9php7内存编程如何高效管理内存优化性能,避免内存泄漏?php7内存管理优化
- 10如何有效利用PHP编程技巧去除字符串中的重复字符?php去除字符串重复字符
推荐教程
- 07-25PHP WindSearch实现站内搜索功能
- 07-25PHP建立MySQL与MySQLi持久化连接(长连接)区别
- 02-01PHP编程用什么软件?资深开发者为你揭秘最佳工具组合
- 07-25PHP调用FFmpeg实现视频切片
- 05-12php编程怎么收费,php开发费用多少钱
- 01-23重庆哪里能找到专业的PHP编程培训班?推荐哪家比较好?
- 11-23PHP 7安装使用体验之性能大提升,兼容性强,扩展支
- 01-23如何通过PHP编程实现从文本框输入并处理整数的完整代码示例?
- 02-20PHP7编程实战,PHP编程机器人设计,如何实现高效编程与智能自动化?
- 01-28php编程第3版pdf中,有哪些新特性或更新让我不得不重新学习?
