今天想着将一本书中的内容扫描成文字,用手机下载了一款软件测试,识别结果很好,但是复制出文字是要收费的。自己想起以前用过百度AI的人脸识别接口API,也见到过图像识别文字的接口,索性就自己用百度提供的免费接口来做一个吧。
百度提供的免费调用量足够自己测试使用了,而且应对一般小的应用也完全够用。
首先,先创建文字识别新应用,没有账号的赶紧注册一个吧。
这里使用的接口API是调用通用文字识别(高精度版)
<? require_once 'AipOcr.php'; // 你的 APPID AK SK const APP_ID = 'XXX';//这些自己去百度智能云管理中心去找就行了 const API_KEY = 'XXX'; const SECRET_KEY = 'XXX'; $client = new AipOcr(APP_ID, API_KEY, SECRET_KEY); $image = file_get_contents('image.jpg'); // 调用通用文字识别(高精度版) $client->basicAccurate($image); // 如果有可选参数 $options = array(); $options["detect_direction"] = "false"; //是否检测图像朝向,默认不检测,即:false。 $options["probability"] = "false";//是否返回识别结果中每一行的置信度 $options["language_type"] = "CHN_ENG"; //- CHN_ENG:中英文混合; // 带参数调用通用文字识别(高精度版) $image_ocr_array=$client->basicAccurate($image, $options); print_r($image_ocr_array);//输出完整结果 /* 图像识别出文字的返回输出结果数组如下: Array ( [log_id] => 6.6965972121656E+18 [words_result_num] => 29 [words_result] => Array ( [0] => Array ( [words] => 第21章优化 MySQL Server ) [1] => Array ( [words] => 64 ) [2] => Array ( [words] => 21.4调整MySQ并发相关的参数 ) */ echo "<hr>"; echo "共有结果:".$image_ocr_array['words_result_num']." 行";// 实际扫描识别图片中的文字,是按行来得出结果的。 echo "<hr>"; $words_list=''; //定义一个存储识别文字结果的变量 for ($i=0;$i<$image_ocr_array['words_result_num'];$i++){ $words_list=$words_list. $image_ocr_array['words_result'][$i]['words']."<br />";//这里在结尾加入了换行符号。根据需要自己调整吧。 } echo $words_list;//只输出图像识别文字合并后的结果 ?>
下面图像文字和识别文字结果的对照图片:
这次就不提供更多的相关参数说明和文件引用的SDK文件下载地址了,这些在创建应用后都有最新版的文档说明和下载地址。自己动手吧。