关键词:更新题库到ES, php图片转base64位码,调汉王图像识别接口, 调搜索引擎接口,删除collection
一、更新题库到ES(四)
1.1 php图片转base64位码
实现了,代码如下:
1)先搞一个php,上传文件用的,如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>New Document </title>
<metaname="Generator" content="EditPlus">
<metaname="Author" content="">
<metaname="Keywords" content="">
<metaname="Description" content="">
<meta charset="utf-8">
</head>
<body>
<form method="post"enctype="multipart/form-data"
action="2.2php_photo_base64.php">
<inputtype="file" name="imgfile"value=''>
<inputvalue='提交' type="submit">
</form>
</body>
</html>
注:注意三点,一是utf-8编码;二是提交到一个php(2.2php_photo_base64.php),三是提交时要给上传文件一个文字,方便接收。效果如下:
2)2.2php_photo_base64.php如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<metacharset="utf-8">
</head>
<body>
<?php
$img = $_FILES['imgfile']['tmp_name'];
$base64_img = base64EncodeImage($img);
echo '这是个图像:<br>';
echo '<img src="' . $base64_img .'" style="width:500px;height:500px;" />'.'<br>';
function base64EncodeImage ($image_file) {
$base64_image = '';
$image_info = getimagesize($image_file);
$image_data = fread(fopen($image_file, 'r'), filesize($image_file));
$base64_image = 'data:' . $image_info['mime'] . ';base64,' .
chunk_split(base64_encode($image_data));
return $base64_image;
}
?>
</body>
</html>
注:注意三点:一是要用uft-8编码,二是接收时,要用一样的文件名(imgfile),三是输出时可以以图像输出。还有一个注意点是要获取临时文件名(tmp_name),这样输出的是一个临时路径名,就不用把图片和程序放在一个文件夹里了。效果如下:
1.2调汉王图像识别接口
//2调汉王的接口识别图像,返回识别字符串-------------------------------------------------------2
// 参数:
// string key – 识别授权码(请询问汉王)
// string base64img – base64 格式的图像数据。注意HTTP 调用时 base64字符串要符合Url编码规范
// int option – 调用选项(=0 纯文本;=1 文本公式混合;=2 公式区域同时提供文本和公式结果)
// bool combine – 是否合并识别结果为一个字符串(true;false)
$params=array("key"=>"HanvonTestDianzhiJiaoyu","base64img"=>$base64_img,"option"=>"1","combine"=>"true");
$url ='http://114.215.125.18:8070/HanvonFormula.asmx/QuestionRecoJson';
$code = json_decode(curlRequest($url,$params),true)['result'];
echo $code."<br><br>";
echo "<pre>";
function curlRequest( $url, $params=array(), $header=array() ){
$ch = curl_init();
$res= curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
if( isset($_SERVER['HTTP_USER_AGENT']) ){
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
}
if( $params ){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
}
if( $header ){
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
$result = curl_exec ($ch);
curl_close($ch);
if ($result == NULL) {
return false;
}
return $result;
}
注:把上述获取的图片base64位码,传到图像识别接口里。需要传四个参数,一是key,二是base64位码,三是识别option,四是combine是否合并结果。
1.3调搜索引擎接口,搜题库的题
//3调搜索引擎接口---------------------------------------------3
$url ='http://192.168.1.14:8004/v1/elasticsearch/search/searchs';
$params = array('type'=>1,'keyword'=>$code);
print_r(curlRequest($url,$params));
注:需要传两个参数,一是搜索类型,是搜索题还是试卷;二是传入识别的关键字,用于题目搜索。
1.4 尝试搜索两个关键字
1)小知识------删除mongo数据库中的表(collection),用如下命令:
db.Problem_temp.drop();
2017年3月25日星期六