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

PHP教程 2025-08-02

目录

  • 一、什么是OCR技术
  • 二、PHP如何实现OCR
  • 三、方法一:使用 Tesseract-OCR
    • 1. 什么是 Tesseract-OCR
    • 2. 环境准备
    • 3. PHP与Tesseract集成
  • 四、方法二:调用百度OCR API
    • 1. 注册百度智能云
    • 2. 安装 HTTP 请求库
    • 3. 获取 Access Token
    • 4. 调用百度 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
      

      示例代码

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

      ?php
      require 'vendor/autoload.php';
      
      use thiagoalessioTesseractOCRTesseractOCR;
      
      // 选择图片
      $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. 注册百度智能云

      • 访问 百度智能云 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';
      
      use GuzzleHttpClient;
      
      function getAccessToken($apiKey, $secretKey) {
          $client = new Client();
          $response = $client-post('https://aip.baidu***bce.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 接口,完成图片文字识别:

      ?php
      require 'vendor/autoload.php';
      
      use GuzzleHttpClient;
      
      function recognizeText($imagePath, $accessToken) {
          $client = new Client();
      
          // 读取图片并进行 Base64 编码
          $imageData = base64_encode(file_get_contents($imagePath));
      
          $response = $client-post('https://aip.baid*u**bce.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使用OCR技术识别图片中的文字(无需接口)
      • PHP+百度AI OCR文字识别实现了图片的文字识别功能
      • PHP实现识别复杂pdf文档的示例代码
      • PHP实现百度人脸识别
      • PHP图像识别技术原理与实现