ResumeSDK提供人岗匹配计算接口,其接受一个附件简历及一个JD作为输入。基于http+json格式的方式提供服务,以同时支持各种不同开发语言的客户端调用。
ResumeSDK提供SaaS模式和独立部署两种形式的服务模式:
两种服务方式的接口仅涉及账户信息的地方有差异,匹配结果字段信息均一致。以下以SaaS服务的接口格式做详细介绍。
按照如下方式和内容构造http请求:
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
uid | int | 必填 | 用户id(注:仅SaaS接口需要,独立部署版或者阿里云客户不需此字段) |
pwd | string | 必填 | 用户密码(注:仅SaaS接口需要,独立部署版或者阿里云客户不需此字段) |
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
file_name | string | 必填 | 简历文件名。请务必带上正确的文件后缀名,否则部分简历可能解析失败。 |
file_cont | string | 必填 | 简历文件内容(以base64编码),其中: 1)图片简历:based64编码后大小不超过8M,最短边至少100px,支持jpg/jpeg/png/bmp/tif/gif格式。 图片越大OCR超时风险越高,建议大小不超过4M、长宽比小于4、分辨率600*800以上; 2)非图片简历:based64编码后大小不超过10M(注:阿里云接口是不超过8M); |
need_avatar | int | 可选 | 是否需要解析头像,0为不需要,1为需要,默认为0 |
need_social_exp | int | 可选 | 是否需要解析实践经历,0为不需要,1为需要,默认为0: 1)若需要解析,则对“社会实践”及“在校活动”文本进行解析,解析结果放置在social_exp_objs字段中; |
ocr_type | int | 可选 | ocr(图片解析所用到的文字识别)类型。(注:仅独立部署版需要,SaaS接口或者阿里云客户不需此字段) |
file_type | int | 可选字段 | 简历类型: 1)0: 表示给定的简历为原始格式,ResumeSDK先进行解析后再与职位计算匹配。 (该类型下,file_cont字段存放原始简历内容) 2)1:表示给定的简历为ResumeSDK解析得到的json格式,则ResumeSDK直接计算其与职位的匹配。 (该类型下,file_cont字段存放解析的json结果); |
need_parse_result | int | 可选字段 | 是否需要返回简历解析结果:0为否,1为是,默认为0 |
jd_obj | dict | 必选字段 | 职位信息(详细见下表) |
职位信息jd_obj的相关字段:
字段 | 类型 | 是否必填 | 描述 |
---|---|---|---|
title | string | 必填字段 | 职位标题,比如“java工程师” |
city | string | 可选字段 | 职位所在城市,格式:"上海" |
salary | string | 可选字段 | 职位月薪范围,格式:"3000-5000元/月"或"5000元以上"或"不限" |
work_year | string | 可选字段 | 工作年限要求,格式:"1-3年"、"应届生"、"不限" |
degree | string | 可选字段 | 职位学历要求,格式:"本科"、"硕士"、"不限" |
content | string | 可选字段 | 职位详情 |
请求结构体示例:
{
"uid": 123456,
"pwd": "abccba",
"file_name": "resume_name.docx",
"file_cont": "UFAFDA132fAFA...",
"need_avatar": 0,
"jd_obj": {
"title": "java工程师",
"city": "北京",
"salary": "3000-5000元/月",
"work_year": "1-3年",
"degree": "本科",
"content": "工作内容:1、软件的程序设计与代码编写;2、有关技术方案、产品文档的编写,软件单元的测试;..."
}
}
ResumeSDK以json格式返回解析结果,它的内容包括:
字段 | 类型 | 描述 |
---|---|---|
code | int | 状态码,200表示正常,其余表示异常 |
message | string | 状态信息描述 |
字段 | 类型 | 描述 |
---|---|---|
uid | int | 用户id |
usage_limit | int | 用户的总调用量 |
usage_remaining | int | 用户剩余的调用量,参考扣费规则,当值为0时不能再调用。为保持类型不变,仅保留整数部分 |
返回结构体示例:
{
"status": {
"code": 200,
"message": "OK"
},
"account": {
"uid": 123456,
"usage_limit": 62500,
"usage_remaining": 50000
},
"parse_result": {
......
},
"match_result": {
......
}
}
字段 | 类型 | 描述 |
---|---|---|
final_sim | float | 综合匹配得分(范围是[0.0, 10.0],下同) |
expect_sim | float | 期望工作匹配得分 |
capacity_sim | float | 个人能力匹配得分 |
job_exp_sim | float | 工作经历匹配得分 |
desc_sim | float | 工作经历及项目经历的内容描述匹配得分 |
expect_sim_obj | Dict | 期望工作匹配信息,包括: 1)salary_sim: 与期望薪资的匹配; 2)city_sim: 与期望工作城市的匹配; 3)title_sim: 与期望工作职位的匹配; |
capacity_sim_obj | Dict | 个人能力匹配信息,包括: 1)salary_sim: 与预估薪资的匹配; 2)work_year_sim: 与工作年限的匹配; 3)degree_sim:与学历的匹配; |
job_exp_sim_objs | Array | 工作经历匹配信息,计算职位与最近3段工作经历的匹配,每段包括: 1)title_sim: 与该段工作里职位的匹配; 2)content_sim: 与该段工作里内容的匹配; |
proj_exp_sim_objs | Array | 项目经历匹配信息,计算职位与最近3段项目经历的匹配,每段包括: 1)title_sim: 与该项目里担任职位的匹配; 2)content_sim: 与该项目内容的匹配; |
样本示例:
"match_result": {
"desc_sim": 0.0,
"final_sim": 1.8705288974489143,
"capacity_sim_obj": {
"salary_sim": 3.452914798206278,
"work_year_sim": 5.0,
"degree_sim": 0.0
},
"capacity_sim": 1.726457399103139,
"job_exp_sim": 1.8781116078881657,
"job_exp_sim_objs": [
{
"content_sim": 7.818741202354431,
"title_sim": 0.0
},
{
"content_sim": 6.777338981628418,
"title_sim": 0.0
},
{
"content_sim": 0,
"title_sim": 0
}
],
"proj_exp_sim_objs": [
{
"content_sim": 0.0,
"title_sim": 0.0
},
{
"content_sim": 0,
"title_sim": 0
},
{
"content_sim": 0,
"title_sim": 0
}
],
"expect_sim": 0.0,
"expect_sim_obj": {
"salary_sim": 0,
"city_sim": 0.0,
"title_sim": 0.0
}
}
ResumeSDK人岗匹配基于http+json格式的接口方式提供服务,可以同时支持各种不同开发语言的客户端调用。
使用前需要先获取接口账号信息,ResumeSDK提供以下几种渠道的接口:
官网接口Python代码:需要安装pip install requests。此代码同时支持python2及python3。
#coding: utf-8
import sys
import base64
import requests
import json
def test_matcher(url, fname, uid, pwd):
"""
人岗匹配功能:计算给定的简历和职位之间的匹配信息。如果,
file_type=0:表示给定的简历为原始格式,ResumeSDK先进行解析后再于职位计算匹配,返回结果同时包含简历解析结果和匹配结果;
file_type=1:表示给定的简历为ResumeSDK解析得到的json格式,则ResumeSDK直接计算其与职位的匹配,返回结果只包含匹配结果;
返回结果:每一项得分范围为[0, 10], 最高是10分。
"""
# 读取文件内容
cont = open(fname, 'rb').read()
base_cont = base64.b64encode(cont)
base_cont = base_cont.decode('utf-8') if sys.version.startswith('3') else base_cont #兼容python2与python3
# 构造json请求
headers = {'uid': str(uid), 'pwd': pwd}
data = {
'file_type': 0, # 简历类型:0为原始格式简历,1为ResumeSDK解析得到的json格式简历
'file_name': fname, # 简历文件名(需包含正确的后缀名)
'file_cont': base_cont, # 简历内容(base64编码的简历内容)
'jd_obj': {
'title': 'java开发',
'city': u'上海',
'salary': u'5000-10000元/月', # 月薪范围,格式:"3000-5000元/月"或"5000元以上"或"不限"
'work_year': u'1-3年', # 工作年限要求,格式:"1-3年"、"应届生"、"不限"
'degree': u'本科', # 学历要求,格式:"本科"、"硕士"
'content': u'1.本科以上学历,计算机专业,三年以上JAVA开发经验;2.精通HTML、JSP、Javascript、Ajax、CSS、XML等技术;...', # 职位详情
},
'need_parse_result': 0,
}
# 发送请求
res = requests.post(url, data=json.dumps(data), headers=headers)
# 解析结果
print("http status code:", res.status_code)
res_js = json.loads(res.text)
print('result:\n%s\n'%(json.dumps(res_js, indent=2, ensure_ascii=False)))
if __name__ == '__main__':
url = 'http://www.resumesdk.com/api/match' # 接口地址,也可以用https
fname = u'D:/resumeSDK/resume.docx' # 替换为你的文件名
uid = 123456 # 替换为你的用户名(int格式)
pwd = '123abc' # 替换为你的密码(str格式)
test_matcher(url, fname, uid, pwd)
官网接口PHP代码。
<?php
$url = "http://www.resumesdk.com/api/match";
$file_name = 'D:/resumeSDK/resume.docx'; # 替换为你的简历文件名
$file_cont = base64_encode(file_get_contents($file_name));
$jd_obj = array(
'title' => 'java开发',
'city' => '上海',
'salary' => '5000-10000元/月', # 月薪范围,格式:"3000-5000元/月"或"5000元以上"或"不限"
'work_year' => '1-3年', # 工作年限要求,格式:"1-3年"、"应届生"、"不限"
'degree' => '本科', # 学历要求,格式:"本科"、"硕士"
'content' => '1.本科以上学历,计算机专业,三年以上JAVA开发经验;2.精通HTML、JSP、Javascript、Ajax、CSS、XML等技术;...', # 职位详情
);
$data = array(
'file_type' => 0,
'file_cont' => $file_cont,
'file_name'=> $file_name,
'need_avatar' => 0,
'jd_obj' => $jd_obj,
'need_parse_result' => 0 # 是否同时返回简历解析结果,0为不返回,1为返回
);
$data_string = json_encode($data);
$headers = array(
"Content-Type: application/json",
"uid: your_uid", # 替换为您的uid
"pwd: your_pwd" # 替换为您的pwd
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch , CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch , CURLOPT_HTTPHEADER, $headers);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo 'HTTP status code: ' . $httpcode . "\n";
print_r($output);
?>
独立部署版不需进行用户验证,其接口官网SaaS版接口差不多。具体使用说明如下:
阿里云接口AppCode验证方式和官网接口差不多,使用Authorization替换headers中的uid和pwd即可。具体说明如下:
阿里云接口Python代码:需要安装pip install requests。此代码同时支持python2及python3。
#coding: utf-8
import sys
import base64
import requests
import json
def test_matcher(url, fname, appcode):
"""
人岗匹配功能:计算给定的简历和职位之间的匹配信息。如果,
file_type=0:表示给定的简历为原始格式,ResumeSDK先进行解析后再于职位计算匹配,返回结果同时包含简历解析结果和匹配结果;
file_type=1:表示给定的简历为ResumeSDK解析得到的json格式,则ResumeSDK直接计算其与职位的匹配,返回结果只包含匹配结果;
返回结果:每一项得分范围为[0, 10], 最高是10分。
"""
# 读取文件内容
cont = open(fname, 'rb').read()
base_cont = base64.b64encode(cont)
base_cont = base_cont.decode('utf-8') if sys.version.startswith('3') else base_cont #兼容python2与python3
# 构造json请求
headers = {'Authorization': "APPCODE " + appcode }
data = {
'file_type': 0, # 简历类型:0为原始格式简历,1为ResumeSDK解析得到的json格式简历
'file_name': fname, # 简历文件名(需包含正确的后缀名)
'file_cont': base_cont, # 简历内容(base64编码的简历内容)
'jd_obj': {
'title': 'java开发',
'city': u'上海',
'salary': u'5000-10000元/月', # 月薪范围,格式:"3000-5000元/月"或"5000元以上"或"不限"
'work_year': u'1-3年', # 工作年限要求,格式:"1-3年"、"应届生"、"不限"
'degree': u'本科', # 学历要求,格式:"本科"、"硕士"
'content': u'1.本科以上学历,计算机专业,三年以上JAVA开发经验;2.精通HTML、JSP、Javascript、Ajax、CSS、XML等技术;...', # 职位详情
},
'need_parse_result': 0 # 是否同时返回简历解析结果,0为不返回,1为返回
}
# 发送请求
res = requests.post(url, data=json.dumps(data), headers=headers)
# 解析结果
print("http status code:", res.status_code)
res_js = json.loads(res.text)
print('result:\n%s\n'%(json.dumps(res_js, indent=2, ensure_ascii=False)))
if __name__ == '__main__':
url = "http://alimatch.market.alicloudapi.com/ResumeMatch";
appcode = "你自己的AppCode";
fname = u'D:/resumeSDK/resume.docx' # 替换为你的文件名
test_matcher(url, fname, appcode)
阿里云接口PHP代码。
<?php
$url = "http://alimatch.market.alicloudapi.com/ResumeMatch";
$appcode = "你自己的AppCode";
$file_name = 'D:/resumeSDK/resume.docx'; # 替换为你的简历文件名
$file_cont = base64_encode(file_get_contents($file_name));
$jd_obj = array(
'title' => 'java开发',
'city' => '上海',
'salary' => '5000-10000元/月', # 月薪范围,格式:"3000-5000元/月"或"5000元以上"或"不限"
'work_year' => '1-3年', # 工作年限要求,格式:"1-3年"、"应届生"、"不限"
'degree' => '本科', # 学历要求,格式:"本科"、"硕士"
'content' => '1.本科以上学历,计算机专业,三年以上JAVA开发经验;2.精通HTML、JSP、Javascript、Ajax、CSS、XML等技术;...', # 职位详情
);
$data = array(
'file_type' => 0,
'file_cont' => $file_cont,
'file_name'=> $file_name,
'need_avatar' => 0,
'jd_obj' => $jd_obj,
'need_parse_result' => 0 # 是否同时返回简历解析结果,0为不返回,1为返回
);
$data_string = json_encode($data);
$headers = array(
"Content-Type: application/json",
"Authorization: APPCODE " . $appcode,
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch , CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch , CURLOPT_HTTPHEADER, $headers);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo 'HTTP status code: ' . $httpcode . "\n";
print_r($output);
?>