当前位置:首页 > PHP

php 实现ocr

2026-01-29 21:47:33PHP

PHP 实现 OCR 的方法

PHP 可以通过调用第三方 OCR 服务或使用本地库来实现 OCR(光学字符识别)功能。以下是几种常见的方法:

调用第三方 OCR API

  1. Google Cloud Vision API
    使用 Google Cloud Vision API 可以轻松实现 OCR 功能。需要安装 Google Cloud SDK 并获取 API 密钥。

    require 'vendor/autoload.php';
    use Google\Cloud\Vision\VisionClient;
    
    $vision = new VisionClient(['keyFile' => json_decode(file_get_contents('path/to/key.json'), true)]);
    $image = $vision->image(file_get_contents('path/to/image.jpg'), ['TEXT_DETECTION']);
    $result = $vision->annotate($image);
    
    foreach ($result->text() as $text) {
        echo $text->description() . PHP_EOL;
    }
  2. Tesseract OCR
    Tesseract 是一个开源的 OCR 引擎,可以通过 PHP 的 exec 函数调用命令行工具。

    $imagePath = 'path/to/image.jpg';
    $outputPath = 'path/to/output.txt';
    exec("tesseract $imagePath $outputPath", $output, $returnCode);
    
    if ($returnCode === 0) {
        echo file_get_contents($outputPath . '.txt');
    } else {
        echo "OCR failed.";
    }
  3. Microsoft Azure Computer Vision API
    类似于 Google Cloud Vision,Azure 也提供了 OCR 功能。

    $endpoint = 'https://your-region.api.cognitive.microsoft.com/vision/v3.1/ocr';
    $apiKey = 'your-api-key';
    $imageData = file_get_contents('path/to/image.jpg');
    
    $headers = [
        'Content-Type: application/octet-stream',
        'Ocp-Apim-Subscription-Key: ' . $apiKey
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $endpoint);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $imageData);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    
    $result = json_decode($response, true);
    print_r($result);

使用本地 PHP OCR 库

  1. phpOCR
    phpOCR 是一个简单的 PHP OCR 库,适合处理简单的图像文本识别。

    include 'phpOCR.php';
    $ocr = new phpOCR();
    $text = $ocr->recognize('path/to/image.jpg');
    echo $text;
  2. smalot/pdfparser + Tesseract
    结合 PDF 解析和 OCR 功能,适用于 PDF 文件的文本提取。

    php 实现ocr

    require 'vendor/autoload.php';
    use Smalot\PdfParser\Parser;
    
    $parser = new Parser();
    $pdf = $parser->parseFile('path/to/document.pdf');
    $text = $pdf->getText();
    
    // 如果 PDF 是扫描件,需要先通过 OCR 处理
    exec("tesseract scanned_page.jpg output");
    $ocrText = file_get_contents('output.txt');

注意事项

  • 第三方 API 通常有调用次数限制或收费,需注意使用条款。
  • 本地 OCR 引擎(如 Tesseract)需要安装额外的软件依赖。
  • 图像质量直接影响 OCR 的准确性,建议预处理图像(如去噪、调整对比度)。

以上方法可以根据具体需求选择,第三方 API 更适合高精度需求,而本地方案适合离线或低成本场景。

标签: phpocr
分享给朋友:

相关文章

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Session 是…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (flock…

php array实现

php array实现

PHP 数组实现 PHP 数组是一种灵活的数据结构,可以存储多个值。以下是几种常见的实现方式: 索引数组 索引数组使用数字作为键名,默认从0开始递增。 $fruits = array("Apple…