sabioweb / ocr-space-package
A pure PHP OCR package using OCR.Space API - Developed by Sabioweb Team
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/sabioweb/ocr-space-package
Requires
- php: ^8.3
- guzzlehttp/guzzle: ^7.8
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2026-01-02 10:57:07 UTC
README
A pure PHP OCR package for extracting text from images and PDF files using OCR.Space API.
Developer: Sabioweb
Author: Ramezanzadeh
🇮🇷 Read in Persian / خواندن به فارسی
Installation
Install via Composer
composer require sabioweb/ocr-space-package
Install via Git
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/sabioweb/OcrSpace-Package.git"
}
],
"require": {
"sabioweb/ocr-space-package": "dev-main"
}
}
Features
- ✅ Extract text from images (JPG, PNG)
- ✅ Extract text from PDF files
- ✅ Extract text from image and PDF URLs
- ✅ Support for multiple languages (Persian, English, Arabic, etc.)
- ✅ Advanced OCR settings
- ✅ Error handling and exceptions
- ✅ Compatible with PHP 8.3+
- ✅ Framework-independent (Pure PHP)
Usage
Basic Usage: Extract Text from Image File
<?php require 'vendor/autoload.php'; use Sabioweb\Ocr\SBOClient; use Sabioweb\Ocr\SBORequestBuilder; // Create client (API Key is optional) $client = new SBOClient('YOUR_API_KEY'); // Extract text from image file $builder = new SBORequestBuilder(); $response = $client->recognizeFromFile( $builder ->setFile('/path/to/image.jpg') ->setLanguage('fas+eng') ->build() ); echo $response->getText(); echo "\nConfidence: " . $response->getConfidence();
Extract Text from URL
$builder = new SBORequestBuilder(); $response = $client->recognizeFromUrl( $builder ->setUrl('https://example.com/image.png') ->setLanguage('eng') ->build() ); echo $response->getText();
Extract Text from PDF File
$builder = new SBORequestBuilder(); $response = $client->recognizeFromFile( $builder ->setFile('/path/to/document.pdf') ->setLanguage('fas+eng') ->build() ); // Get text from all pages echo $response->getText(); // Get text from specific page echo $response->getTextByPage(0); // First page echo $response->getTextByPage(1); // Second page // Page count echo "Total pages: " . $response->getPageCount();
Advanced Settings
$builder = new SBORequestBuilder(); $response = $client->recognizeFromFile( $builder ->setFile('/path/to/image.jpg') ->setLanguage('fas+eng') ->setOcrEngine(2) // OCR Engine (1-3) ->setIsOverlayRequired(true) // Get overlay information ->setScale('2') // Image scale ->setDetectOrientation('true') // Detect image orientation ->build() ); // Get overlay for first page $overlay = $response->getOverlayByPage(0);
Error Handling
use Sabioweb\Ocr\Exception\NetworkException; use Sabioweb\Ocr\Exception\OcrApiException; use Sabioweb\Ocr\Exception\ValidationException; try { $response = $client->recognizeFromFile($request); echo $response->getText(); } catch (ValidationException $e) { echo "Validation error: " . $e->getMessage(); } catch (NetworkException $e) { echo "Network error: " . $e->getMessage(); } catch (OcrApiException $e) { echo "API error: " . $e->getMessage(); $errorDetails = $e->getErrorDetails(); }
Laravel Usage
Controller Example
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Sabioweb\Ocr\SBOClient; use Sabioweb\Ocr\SBORequestBuilder; use Sabioweb\Ocr\Exception\OcrApiException; class OcrController extends Controller { public function recognizeImage(Request $request) { $request->validate([ 'image' => 'required|image|mimes:jpeg,png,jpg|max:10240', ]); try { $client = new SBOClient(config('services.ocr.api_key')); $builder = new SBORequestBuilder(); $response = $client->recognizeFromFile( $builder ->setFile($request->file('image')->getRealPath()) ->setLanguage('fas+eng') ->setIsOverlayRequired(false) ->build() ); return response()->json([ 'success' => true, 'text' => $response->getText(), 'confidence' => $response->getConfidence(), 'processing_time' => $response->getProcessingTimeInMilliseconds(), ]); } catch (OcrApiException $e) { return response()->json([ 'success' => false, 'error' => $e->getMessage(), ], 400); } } public function recognizeFromUrl(Request $request) { $request->validate([ 'url' => 'required|url', ]); $client = new SBOClient(config('services.ocr.api_key')); $builder = new SBORequestBuilder(); $response = $client->recognizeFromUrl( $builder ->setUrl($request->input('url')) ->setLanguage('fas+eng') ->build() ); return response()->json([ 'success' => true, 'text' => $response->getText(), 'confidence' => $response->getConfidence(), ]); } }
Service Class Example
<?php namespace App\Services; use Sabioweb\Ocr\SBOClient; use Sabioweb\Ocr\SBORequestBuilder; final class OcrService { public function __construct( private readonly SBOClient $client ) {} public function extractTextFromFile(string $filePath, string $language = 'fas+eng'): string { $builder = new SBORequestBuilder(); $request = $builder ->setFile($filePath) ->setLanguage($language) ->build(); $response = $this->client->recognizeFromFile($request); return $response->getText(); } public function extractTextFromUrl(string $url, string $language = 'fas+eng'): string { $builder = new SBORequestBuilder(); $request = $builder ->setUrl($url) ->setLanguage($language) ->build(); $response = $this->client->recognizeFromUrl($request); return $response->getText(); } }
API Reference
SBOClient
Main client class for communicating with OCR.Space API.
Methods
-
recognizeFromFile(SBORequest $request): SBOResponse
Extract text from file (image or PDF) -
recognizeFromUrl(SBORequest $request): SBOResponse
Extract text from URL (image or PDF)
SBORequestBuilder
Builder class for creating OCR requests using Fluent Interface.
Methods
setFile(string $filePath): self- Set file pathsetUrl(string $url): self- Set URLsetLanguage(string $language): self- Set language (e.g., 'eng', 'fas', 'fas+eng')setOcrEngine(int $ocrEngine): self- Set OCR engine (1-3)setIsOverlayRequired(bool $isOverlayRequired): self- Get overlay informationsetScale(string $scale): self- Set image scalesetDetectOrientation(string $detectOrientation): self- Detect image orientationsetIsCreateSearchablePdf(bool $isCreateSearchablePdf): self- Create searchable PDFsetIsSearchablePdfHideTextLayer(bool $isSearchablePdfHideTextLayer): self- Hide text layer in PDFbuild(): SBORequest- Build and return request
SBOResponse
Response class for managing OCR results.
Methods
getText(): string- Get extracted text from all pagesgetTextByPage(int $pageIndex): ?string- Get text from specific pagegetConfidence(): float- Get average confidencegetConfidenceByPage(int $pageIndex): ?float- Get confidence for specific pagegetPageCount(): int- Get page countgetOverlayByPage(int $pageIndex): ?array- Get overlay for specific pagegetAllOverlays(): array- Get all overlaysgetProcessingTimeInMilliseconds(): int- Get processing time in millisecondsgetSearchablePdfOutput(): ?string- Get searchable PDF output (base64)isErroredOnProcessing(): bool- Check if error occurredgetErrorMessage(): string- Get error messagegetErrorDetails(): string- Get error details
Exception Classes
OcrException- Base exception classNetworkException- Network errorOcrApiException- API errorValidationException- Validation error
Supported Languages
eng- Englishfas- Persian/Farsiara- Arabicdeu- Germanfra- Frenchspa- Spanish- And other languages supported by OCR.Space
To use multiple languages, separate them with +: 'fas+eng'
Testing
To run tests:
composer install vendor/bin/phpunit
License
This package is released under the MIT License.
Support
For support and bug reports, visit Sabioweb or GitHub Repository.