↓こちらを参考にして、Cloud Vision API を使って、画像の文字を抽出してみました。
<?php
// APIキー
$api_key = "◯◯◯" ;
// リファラー (許可するリファラーを設定した場合)
//$referer = "https://...com/" ;
// 画像へのパス
$image_path = "./test.jpg" ;
// リクエスト用のJSONを作成
$json = json_encode( array(
"requests" => array(
array(
"image" => array(
"content" => base64_encode( file_get_contents( $image_path ) ) ,
) ,
"features" => array(
/
array(
"type" => "FACE_DETECTION" ,
"maxResults" => 3 ,
) ,
array(
"type" => "LANDMARK_DETECTION" ,
"maxResults" => 3 ,
) ,
array(
"type" => "LOGO_DETECTION" ,
"maxResults" => 3 ,
) ,
array(
"type" => "LABEL_DETECTION" ,
"maxResults" => 3 ,
) ,
/
array(
"type" => "TEXT_DETECTION" ,
"maxResults" => 3 ,
) ,
/
array(
"type" => "SAFE_SEARCH_DETECTION" ,
"maxResults" => 3 ,
) ,
array(
"type" => "IMAGE_PROPERTIES" ,
"maxResults" => 3 ,
) ,
/
) ,
) ,
) ,
) ) ;
// リクエストを実行
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL, "https://vision.googleapis.com/v1/images:annotate?key=" . $api_key ) ;
curl_setopt( $curl, CURLOPT_HEADER, true ) ;
curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, "POST" ) ;
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( "Content-Type: application/json" ) ) ;
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;
if( isset($referer) && !empty($referer) ) curl_setopt( $curl, CURLOPT_REFERER, $referer ) ;
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;
curl_setopt( $curl, CURLOPT_POSTFIELDS, $json ) ;
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
// 取得したデータ
$json = substr( $res1, $res2["header_size"] ) ; // 取得したJSON
//$header = substr( $res1, 0, $res2["header_size"] ) ; // レスポンスヘッダー
// 出力
//echo "
JSON
" ;
echo $json ;
//echo "
ヘッダー
" ;
//echo $header ;
精度は今まで使ったOCRの中では一番高かったと思います。それでも、Googleの技術を使っても、まだ100%ではないみたいです。
そろそろ、composerを使ってソースを管理するようにした方がいいかもしれない。