当前位置:首页 > PHP

php 实现 ocr

2026-02-15 02:41:58PHP

使用 Tesseract OCR 实现 PHP 文字识别

Tesseract 是一个开源的 OCR 引擎,支持多种语言。PHP 可以通过调用 Tesseract 命令行工具或使用包装库实现 OCR 功能。

安装 Tesseract OCR
在 Ubuntu/Debian 系统上安装 Tesseract 和中文语言包:

sudo apt install tesseract-ocr
sudo apt install tesseract-ocr-chi-sim

通过 exec 调用 Tesseract
PHP 可以通过 exec() 函数调用 Tesseract 命令行工具:

$imagePath = 'path/to/image.png';
$outputPath = 'path/to/output';
$language = 'chi_sim'; // 中文简体

exec("tesseract $imagePath $outputPath -l $language", $output, $returnCode);

if ($returnCode === 0) {
    $text = file_get_contents($outputPath . '.txt');
    echo $text;
} else {
    echo 'OCR 处理失败';
}

使用 thiagoalessio/tesseract-ocr-for-php 库

这是一个流行的 PHP Tesseract 包装库,提供了更友好的接口。

安装库:

php 实现 ocr

composer require thiagoalessio/tesseract-ocr-for-php

使用示例:

require 'vendor/autoload.php';

use thiagoalessio\TesseractOCR\TesseractOCR;

$text = (new TesseractOCR('path/to/image.png'))
    ->lang('chi_sim') // 设置中文语言
    ->run();

echo $text;

使用百度 OCR API 实现

百度 AI 开放平台提供了强大的 OCR 接口,适合需要更高准确率的场景。

获取 API 密钥后使用:

php 实现 ocr

$image = file_get_contents('path/to/image.jpg');
$base64 = base64_encode($image);
$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=YOUR_ACCESS_TOKEN';

$data = [
    'image' => $base64,
    'language_type' => 'CHN_ENG'
];

$options = [
    'http' => [
        'header' => "Content-type: application/x-www-form-urlencoded\r\n",
        'method' => 'POST',
        'content' => http_build_query($data)
    ]
];

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$result = json_decode($result, true);

print_r($result['words_result']);

使用 Google Cloud Vision API

Google 的 OCR 服务支持多种语言和复杂布局。

安装客户端库:

composer require google/cloud-vision

使用示例:

require 'vendor/autoload.php';

use Google\Cloud\Vision\V1\ImageAnnotatorClient;

$client = new ImageAnnotatorClient([
    'credentials' => 'path/to/service-account.json'
]);

$image = file_get_contents('path/to/image.jpg');
$response = $client->textDetection($image);
$texts = $response->getTextAnnotations();

foreach ($texts as $text) {
    echo $text->getDescription() . "\n";
}

$client->close();

性能优化建议

处理大量图像时考虑使用队列系统如 Redis 或 RabbitMQ 异步处理
对于低质量图像,预处理步骤如二值化、降噪能显著提高识别率
缓存常用识别结果减少重复处理
选择适合特定场景的 OCR 服务,如身份证识别、车牌识别等专用接口通常比通用 OCR 更准确

标签: phpocr
分享给朋友:

相关文章

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…