Распознавание картинки в текст при помощи yandex.cloud
Довелось давече попробовать по распознавать текст при помощи сервиса Vision OCR от Яндекс облако. Результатом родился класс на PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
<?php class TCloud { public $token=""; public $cloud_id=""; public $folder_id=""; public $zone=""; public $iam_token=""; public $debig=false; /** * Инициализация класса * @param type $token - токен * @param type $cloud_id - идентификатор облака * @param type $folder_id - идентификатор папки * @param type $zone - идентификатор зоны */ public function __construct($token,$cloud_id,$folder_id,$zone,$debug=false) { $this->token=$token; $this->cloud_id=$cloud_id; $this->folder_id=$folder_id; $this->zone=$zone; $this->debug=$debug; } /** * Получение IAM токена * Подробнее: https://yandex.cloud/ru/docs/iam/operations/iam-token/create#api_1 * @return bool */ public function GetIAMToken(){ $ch = curl_init("https://iam.api.cloud.yandex.net/iam/v1/tokens"); curl_setopt($ch, CURLOPT_VERBOSE, $this->debug); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); $data["yandexPassportOauthToken"]=$this->token; curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($data)); $res=curl_exec($ch); if (curl_errno($ch)) { $error_msg = curl_error($ch); var_dump($res); var_dump($error_msg); return false; } $res= json_decode($res); if ($res==null){return false;}; $this->iam_token=$res->iamToken; return true; } /** * Распознать картинку * @param type $mimetype - тип входящего файла (JPEG, PNG, PDF) * @param type $model - режим распозанвания (page) * @param type $content - контент в формате BASE64 * @param type $languageCodes - языки для распознавания (*), массив * Подробнее: https://yandex.cloud/ru/docs/vision/quickstart */ public function OCR($mimetype="JPEG",$model="page",$content,$languageCodes=["*"]){ $ch = curl_init("https://ocr.api.cloud.yandex.net/ocr/v1/recognizeText"); curl_setopt($ch, CURLOPT_VERBOSE, $this->debug); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/json", "Authorization: Bearer ".$this->iam_token, "x-folder-id: ".$this->folder_id, "x-data-logging-enabled: true" ]); $data["mimeType"]=$mimetype; $data["languageCodes"]=$languageCodes; $data["model"]=$model; $data["content"]=$content; curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($data)); $res=curl_exec($ch); if (curl_errno($ch)) { $error_msg = curl_error($ch); var_dump($res); var_dump($error_msg); die(); } return $res; } } |
Результатом возвращается json с блоками распознанного текста/таблиц.