it编程 > 编程语言 > Php

PHP使用OCR技术实现识别图片中的文字

44人参与 2025-02-13 Php

在日常开发中,我们常常会遇到需要从图片中提取文字的需求,例如处理扫描件中的文字、验证码识别或者实现文档数字化管理。ocr(optical character recognition,光学字符识别)技术可以帮助我们快速完成这项任务。今天就来聊聊,如何在 php 中实现 ocr 技术,从图片中提取文字。

一、什么是ocr技术

ocr 是一种通过图像处理技术从图片或扫描件中提取文字的技术,它可以将非结构化的图片内容转化为可编辑的文本。这种技术广泛应用于以下场景:

二、php如何实现ocr

尽管 php 本身并不提供原生的 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

示例代码

以下是一个简单的图片文字识别示例:

<?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

如果你希望更快速、更精准的识别效果,使用云服务是个不错的选择。这里以 百度智能云 ocr 为例。

1. 注册百度智能云

2. 安装 http 请求库

推荐使用 guzzle 发送 http 请求。安装方式如下:

composer require guzzlehttp/guzzle

3. 获取 access token

百度 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";

4. 调用百度 ocr 接口

使用获得的 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识别图片文字内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

详解PHP中互斥锁库hyperf-wise-locksmith的使用

02-13

PHP使用互斥锁确保代码的线程安全的操作示例

02-13

使用PHP和Xunsearch实现歌曲搜索功能

02-13

基于PHP实现一个简单的http服务器

02-13

PHP使用PHPExcel读取excel数据并批量上传到数据库

02-13

PHP执行php.exe -v命令报错的解决方案

02-13

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论