当前位置:首页 > 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 密钥。

    php 实现ocr

    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 功能。

    php 实现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 文件的文本提取。

    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实现打印功能

PHP实现打印功能的方法 在PHP中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $n…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $…