当前位置: 首页 > news >正文

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

1

2

3

sudoapt update

sudoaptinstalltesseract-ocr

sudoaptinstalltesseract-ocr-chi-sim# 安装中文语言包

MacOS

1

2

brewinstalltesseract

brewinstalltesseract-lang

Windows前往 Tesseract 官方下载页面 下载并安装。

3. PHP与Tesseract集成

安装 PHP 扩展

通过 Composer 安装适配 Tesseract 的 PHP 库,例如thiagoalessio/tesseract_ocr

1

composer require thiagoalessio/tesseract_ocr

示例代码

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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

运行后,如果test-image.png中包含文字,Tesseract 将会提取并输出文本内容。

四、方法二:调用百度OCR API

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

1. 注册百度智能云

  • 访问 百度智能云 OCR 服务。
  • 注册账号并创建应用,获取API KeySecret Key

2. 安装 HTTP 请求库

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

1

composer require guzzlehttp/guzzle

3. 获取 Access Token

百度 API 的访问需要使用 Access Token。以下是获取 Token 的代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?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 接口,完成图片文字识别:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<?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)更为合适。
http://www.jsqmd.com/news/589856/

相关文章:

  • OpenClaw+千问3.5-27B代码助手:自动生成Python脚本并测试运行
  • CTF shellcode花样玩法盘点:从短小精悍到可见字符绕过,附实战exp代码
  • PHP解析配置文件的常用方法
  • 告别手动点鼠标!用Windows批处理脚本一键启动Adams并自动建模(附完整脚本)
  • MFI策略避坑指南:AKShare实战中遇到的5个典型问题与解决方案
  • OpenClaw+Phi-3-vision-128k-instruct实战:电商产品图自动生成描述文案
  • Lottie-Android实战:从入门到精通
  • OpenClaw隐私保护方案:Qwen3-14b_int4_awq本地化数据处理优势
  • 别再死磕文档了!用Vector Davinci Configurator手把手配置一个Autosar IO模块(附避坑指南)
  • PHP如何优化冗余代码
  • 2026年评价高的郑州塑料广告扇/郑州广告扇批发/郑州宣传广告扇实力厂家推荐 - 品牌宣传支持者
  • OpenClaw可视化监控:百川2-13B-4bits量化模型任务看板
  • C#调用Halcon必备DLL清单:手把手教你解决常见报错(附错误截图)
  • Chrome浏览器历史版本下载指南:稳定与兼容性的解决方案
  • OpenClaw模型热切换:Qwen3-14B与本地小模型协同工作方案
  • 2026年比较好的无纺布袋/郑州环保无纺布袋品牌厂家推荐 - 品牌宣传支持者
  • 移动端 AI Agent Harness Engineering 的机遇与限制
  • 2026年口碑好的对绞型计算机电缆/屏蔽计算机电缆公司推荐 - 品牌宣传支持者
  • OpenClaw+SecGPT-14B:5个提升个人安全效率的自动化脚本
  • Android开发实战:如何优雅地实现熄屏唤醒功能(附完整代码)
  • 百川2-13B-4bits+OpenClaw:智能邮件分类回复系统个人版
  • AD9361参考工程实战指南:fmcomms2/5/8/11选型与HDL实现差异解析
  • WIZnetInterface嵌入式以太网硬件协议栈驱动详解
  • 2026年靠谱的药厂GMP净化/千级净化公司选择指南 - 品牌宣传支持者
  • OpenClaw对接Qwen2.5-VL-7B:模型地址配置与调试
  • Harness Engineering:AI Agent从Demo到生产的桥梁
  • 2026年靠谱的全自动封箱机/打包一体封箱机高口碑品牌推荐 - 品牌宣传支持者
  • 2026年知名的面粉脉冲除尘器/无纺布除尘器口碑好的厂家推荐 - 品牌宣传支持者
  • OpenClaw学术应用:Qwen3.5-9B辅助学术论文写作全流程
  • OpenClaw自动化测试:Qwen3.5-9B生成与执行Python脚本