PHP使用OCR技术实现识别图片中的文字
发布:smiling 来源: PHP粉丝网 添加日期:2025-12-12 10:29:18 浏览: 评论:0
在日常开发中,我们常常会遇到需要从图片中提取文字的需求,例如处理扫描件中的文字、验证码识别或者实现文档数字化管理。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
- sudoapt update
- sudoapt installtesseract-ocr
- sudoapt installtesseract-ocr-chi-sim # 安装中文语言包
MacOS
- brew installtesseract
- brew installtesseract-lang
Windows 前往 Tesseract 官方下载页面 下载并安装。
3. PHP与Tesseract集成
安装 PHP 扩展
通过 Composer 安装适配 Tesseract 的 PHP 库,例如 thiagoalessio/tesseract_ocr:
- composer require thiagoalessio/tesseract_ocr
示例代码
以下是一个简单的图片文字识别示例:
- <?php
- require'vendor/autoload.php';
- usethiagoalessio\TesseractOCR\TesseractOCR;
- // 选择图片
- $imagePath= 'test-image.png';
- // 初始化 Tesseract
- $ocr= newTesseractOCR($imagePath);
- // 设置语言(中文)
- $ocr->lang('chi_sim'); // 简体中文
- $result= $ocr->run();
- echo"识别结果:\n";
- echo$result;
四、方法二:调用百度OCR API
如果你希望更快速、更精准的识别效果,使用云服务是个不错的选择。这里以 百度智能云 OCR 为例。
1. 注册百度智能云
访问 百度智能云 OCR 服务。
注册账号并创建应用,获取 API Key 和 Secret Key。
2. 安装 HTTP 请求库
推荐使用 Guzzle 发送 HTTP 请求。安装方式如下:
- composer require guzzlehttp/guzzle
3. 获取 Access Token
百度 API 的访问需要使用 Access Token。以下是获取 Token 的代码:
- <?php
- require'vendor/autoload.php';
- useGuzzleHttp\Client;
- functiongetAccessToken($apiKey, $secretKey) {
- $client= newClient();
- $response= $client->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: $token\n";
4. 调用百度 OCR 接口
使用获得的 Token 调用 OCR 接口,完成图片文字识别:
- <?php
- require'vendor/autoload.php';
- useGuzzleHttp\Client;
- functionrecognizeText($imagePath, $accessToken) {
- $client= newClient();
- // 读取图片并进行 Base64 编码
- $imageData= base64_encode(file_get_contents($imagePath));
- $response= $client->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($resultas$item) {
- echo$item['words'] . "\n";
- }
特点 Tesseract-OCR 百度智能云 OCR
适用场景 本地离线识别 在线云服务,支持大规模处理
语言支持 多语言(需安装对应语言包) 多语言自动识别
识别精度 精度一般,取决于图片质量 精度高,适合复杂场景
复杂度 安装配置简单 需联网,稍复杂
费用 免费 部分功能收费
六、总结
通过以上两种方案,PHP 开发者可以轻松实现 OCR 技术在项目中的应用:
对于小型、本地化需求,Tesseract 是一个不错的选择。
对于需要高精度、多功能的场景,云服务(如百度智能云 OCR)更为合适。
Tags: PHP识别图片文字 OCR识别图片文字
- 上一篇:PHP使用互斥锁确保代码的线程安全的操作示例
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)
