当前位置:首页 > 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实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php 线程实现

php 线程实现

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

php 实现无限分类

php 实现无限分类

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、菜单管理等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的实现方式,每个分类记录存储其父…