44人参与 • 2025-02-13 • Php
在日常开发中,我们常常会遇到需要从图片中提取文字的需求,例如处理扫描件中的文字、验证码识别或者实现文档数字化管理。ocr(optical character recognition,光学字符识别)技术可以帮助我们快速完成这项任务。今天就来聊聊,如何在 php 中实现 ocr 技术,从图片中提取文字。
ocr 是一种通过图像处理技术从图片或扫描件中提取文字的技术,它可以将非结构化的图片内容转化为可编辑的文本。这种技术广泛应用于以下场景:
尽管 php 本身并不提供原生的 ocr 支持,但可以通过以下几种方式轻松实现 ocr:
下面我们通过 tesseract-ocr 和百度 ocr api 两种方式,手把手教你实现图片文字识别功能。
tesseract 是 google 提供的一个开源 ocr 引擎,它支持多种语言的文字识别,包括中文,且可以通过简单的命令行或程序语言调用。
安装 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 官方下载页面 下载并安装。
安装 php 扩展
通过 composer 安装适配 tesseract 的 php 库,例如 thiagoalessio/tesseract_ocr
:
composer require thiagoalessio/tesseract_ocr
示例代码
以下是一个简单的图片文字识别示例:
<?php require 'vendor/autoload.php'; use thiagoalessio\tesseractocr\tesseractocr; // 选择图片 $imagepath = 'test-image.png'; // 初始化 tesseract $ocr = new tesseractocr($imagepath); // 设置语言(中文) $ocr->lang('chi_sim'); // 简体中文 $result = $ocr->run(); echo "识别结果:\n"; echo $result;
运行后,如果 test-image.png
中包含文字,tesseract 将会提取并输出文本内容。
如果你希望更快速、更精准的识别效果,使用云服务是个不错的选择。这里以 百度智能云 ocr 为例。
api key
和 secret key
。推荐使用 guzzle
发送 http 请求。安装方式如下:
composer require guzzlehttp/guzzle
百度 api 的访问需要使用 access token。以下是获取 token 的代码:
<?php require 'vendor/autoload.php'; use guzzlehttp\client; function getaccesstoken($apikey, $secretkey) { $client = new client(); $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";
使用获得的 token 调用 ocr 接口,完成图片文字识别:
<?php require 'vendor/autoload.php'; use guzzlehttp\client; function recognizetext($imagepath, $accesstoken) { $client = new client(); // 读取图片并进行 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 ($result as $item) { echo $item['words'] . "\n"; }
特点 | tesseract-ocr | 百度智能云 ocr |
---|---|---|
适用场景 | 本地离线识别 | 在线云服务,支持大规模处理 |
语言支持 | 多语言(需安装对应语言包) | 多语言自动识别 |
识别精度 | 精度一般,取决于图片质量 | 精度高,适合复杂场景 |
复杂度 | 安装配置简单 | 需联网,稍复杂 |
费用 | 免费 | 部分功能收费 |
通过以上两种方案,php 开发者可以轻松实现 ocr 技术在项目中的应用:
到此这篇关于php使用ocr技术实现识别图片中的文字的文章就介绍到这了,更多相关php ocr识别图片文字内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论