PHP如何提取图片中的文字

763 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 6 月更文挑战」的第 12 天,点击查看活动详情

在PHP中,你可以使用OCR(Optical Character Recognition,光学字符识别)技术来提取图片中的文字。OCR是一种将图片中的文字转换为可编辑文本的技术。有几种方式可以实现OCR,以下是其中两种常用的方式:

1.使用第三方库:你可以使用第三方库来进行OCR,其中一个常用的库是Tesseract。Tesseract是一个开源的OCR引擎,支持多种语言。你可以使用Tesseract的PHP封装库来实现图片文字提取。首先,确保在服务器上安装了Tesseract,并在PHP中安装tesseract-php库。然后,你可以使用以下代码示例提取图片中的文字:

require_once 'vendor/autoload.php';

use thiagoalessio\TesseractOCR\TesseractOCR;

// 指定图片路径
$imagePath = 'path/to/your/image.jpg';

// 创建OCR实例
$ocr = new TesseractOCR($imagePath);

// 运行OCR并提取文字
$text = $ocr->run();

// 输出提取的文字
echo $text;

请注意,你需要根据你的项目设置正确的图片路径和安装必要的库。

2.使用云服务API:另一种方法是使用云服务提供的OCR API。这些API通常提供了简单的HTTP请求接口,你可以将图片发送给API并接收返回的文字结果。你需要选择一个OCR服务提供商,并根据其文档中的说明进行操作。以下是使用Google Cloud Vision API进行OCR的示例代码:

<?php

// 图片文件路径
$imagePath = 'path/to/your/image.jpg';

// Google Cloud Vision API 访问凭据
$apiKey = 'your_api_key';

// 将图片转换为base64编码
$imageData = base64_encode(file_get_contents($imagePath));

// 构建请求数据
$data = array(
    'requests' => array(
        array(
            'image' => array(
                'content' => $imageData
            ),
            'features' => array(
                array(
                    'type' => 'TEXT_DETECTION',
                    'maxResults' => 1
                )
            )
        )
    )
);

// 发送POST请求到Google Cloud Vision API
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://vision.googleapis.com/v1/images:annotate?key=' . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
curl_close($ch);

// 解析并输出响应结果
$result = json_decode($response, true);
$text = $result['responses'][0]['textAnnotations'][0]['description'];
echo $text;

请注意,此示例中使用了Google Cloud Vision API,并且你需要替换为你自己的API密钥。此外,根据所选的OCR服务提供商,API的使用方式可能会有所不同,所以请参考其文档以获取准确的使用说明。

这些方法中的每一种都有其优缺点,根据你的需求和项目要求选择适合的方法。