added OCR support

This commit is contained in:
2023-02-05 11:35:21 +10:00
parent fe56acd818
commit be39577466
2 changed files with 83 additions and 3 deletions

View File

@@ -0,0 +1,78 @@
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use thiagoalessio\TesseractOCR\TesseractOCR;
class OCRController extends ApiController
{
/**
* ApplicationController constructor.
*/
public function __construct()
{
// $this->middleware('auth:sanctum')
// ->only(['show']);
}
/**
* Display the specified resource.
*
* @param Request $request The log request.
* @param string $name The log name.
* @return \Illuminate\Http\Response
*/
public function show(Request $request, string $name)
{
// if ($request->user()?->hasPermission('logs/' . $name) === true) {
$url = $request->get('url');
if ($url !== null) {
$tmpfname = tempnam(sys_get_temp_dir(), 'download');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);
file_put_contents($tmpfname, $data);
$ocr = new TesseractOCR();
$ocr->image($tmpfname);
$result = $ocr->run(500);
unlink($tmpfname);
return $this->respondJson([
'ocr' => $result
]);
}//end if
return $this->respondWithErrors(['url' => 'url is missing']);
}
// $ffmpeg = FFMpeg\FFMpeg::create();
// // Load the input video
// $inputFile = $ffmpeg->open('input.mp4');
// // Split the video into individual frames
// $videoFrames = $inputFile->frames();
// foreach ($videoFrames as $frame) {
// // Save the frame as a PNG
// $frame->save(new FFMpeg\Format\Video\PNG(), 'frame-' . $frame->getMetadata('pts') . '.png');
// // Pass the PNG to Tesseract for processing
// exec("tesseract frame-" . $frame->getMetadata('pts') . ".png output");
// }
// // Read the output from Tesseract
// $text = file_get_contents("output.txt");
// // Do something with the text from Tesseract
// echo $text;
}

View File

@@ -2,13 +2,14 @@
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\AuthController; use App\Http\Controllers\Api\AuthController;
use App\Http\Controllers\Api\UserController; use App\Http\Controllers\Api\ContactController;
use App\Http\Controllers\Api\PostController;
use App\Http\Controllers\Api\EventController; use App\Http\Controllers\Api\EventController;
use App\Http\Controllers\Api\LogController; use App\Http\Controllers\Api\LogController;
use App\Http\Controllers\Api\MediaController; use App\Http\Controllers\Api\MediaController;
use App\Http\Controllers\Api\ContactController; use App\Http\Controllers\Api\OCRController;
use App\Http\Controllers\Api\PostController;
use App\Http\Controllers\Api\SubscriptionController; use App\Http\Controllers\Api\SubscriptionController;
use App\Http\Controllers\Api\UserController;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@@ -44,6 +45,7 @@ Route::delete('subscriptions', [SubscriptionController::class, 'destroyByEmail']
Route::post('/contact', [ContactController::class, 'send']); Route::post('/contact', [ContactController::class, 'send']);
Route::get('/logs/{name}', [LogController::class, 'show']); Route::get('/logs/{name}', [LogController::class, 'show']);
Route::get('/ocr', [OCRController::class, 'show']);
Route::middleware('auth:sanctum')->group(function () { Route::middleware('auth:sanctum')->group(function () {
Route::post('/logout', [AuthController::class, 'logout']); Route::post('/logout', [AuthController::class, 'logout']);