基础介绍
接口文档
简历解析 简历画像 人岗匹配 职位解析 职位语义相似度 简历评估 人才推荐 人才搜索 简历查重

人岗匹配

ResumeSDK提供人岗匹配计算接口,其接受一个附件简历及一个JD作为输入。基于http+json格式的方式提供服务,以同时支持各种不同开发语言的客户端调用。


服务模式

ResumeSDK提供SaaS模式和独立部署两种形式的服务模式:

  1. SaaS模式:服务部署在我司服务器上,客户通过远程API调用的方式使用服务,按调用次数或者包年模式收费。可通过以下2种方式进行使用:
  2. 1)直接和我们购买:单价便宜,可以按次、包月或者包年。需要签合同,有起充额度要求;
    2)通过云市场购买:单价稍贵,可以按次购买。不需签合同,起充额度要求低,随购随用;(阿里云接口地址
  3. 独立部署:服务部署在客户自己的服务器上,客户自行运维和管控服务,无调用次数和期限的限制;

两种服务方式的接口仅涉及账户信息的地方有差异,匹配结果字段信息均一致。以下以SaaS服务的接口格式做详细介绍。

1、请求接口格式


请求ULR

  • SaaS接口请求url:http://www.resumesdk.com/api/match;
  • 独立部署请求url:http://ip:2015/api/ResumeMatcher;(ip换成实际的ip地址)
  • 阿里云接口请求url:http://alimatch.market.alicloudapi.com/ResumeMatch;

接口格式

按照如下方式和内容构造http请求:

  1. http请求方式:POST;
  2. http请求头设置Content Type:application/json,并设置:
  3. 字段 类型 必填 描述
    uid int 必填 用户id(注:仅SaaS接口需要,独立部署版或者阿里云客户不需此字段)
    pwd string 必填 用户密码(注:仅SaaS接口需要,独立部署版或者阿里云客户不需此字段)
  4. http请求内容,通过json格式打包如下字段信息:
    字段 类型 必填 描述
    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 必选字段 职位信息(详细见下表)
  5. 职位信息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、有关技术方案、产品文档的编写,软件单元的测试;..."
      }
    }
            

2、返回接口总体格式

ResumeSDK以json格式返回解析结果,它的内容包括:

  1. "status",解析结果状态信息:
    字段 类型 描述
    code int 状态码,200表示正常,其余表示异常
    message string 状态信息描述
  2. "account",账户状态信息:
    字段 类型 描述
    uid int 用户id
    usage_limit int 用户的总调用量
    usage_remaining int 用户剩余的调用量,参考扣费规则,当值为0时不能再调用。为保持类型不变,仅保留整数部分
  3. "parse_result",简历解析结构体。包含170多个字段信息,具体参考简历解析结构体。
  4. "match_result",人岗匹配结构体。包含详细匹配信息,具体参考人岗匹配结构体

返回结构体示例:


    {
        "status": {
            "code": 200,
            "message": "OK"
        },
        "account": {
            "uid": 123456,
            "usage_limit": 62500,
            "usage_remaining": 50000
        },
        "parse_result": {
        ......
        },
        "match_result": {
        ......
        } 
    }
            


3、人岗匹配结构体

  • 字段名称:match_result;
  • 字段类型:Dict类型;
  • 字段说明:存放详细的匹配信息,其包含的子字段信息如下:
字段 类型 描述
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提供以下几种渠道的接口:

  1. 官网SaaS版接口:需联系官网客服获取测试接口账号,使用时填入uid和pwd信息;
  2. 官网独立部署版接口:需要先部署好服务;
  3. 阿里云接口:通过阿里云接口地址获取AppCode账号信息;

1、官网SaaS接口示例


Python

官网接口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代码。


<?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);
?>
            


2、官网独立部署接口示例


独立部署版不需进行用户验证,其接口官网SaaS版接口差不多。具体使用说明如下:

  1. 服务部署好之后获得服务的ip和port信息;
  2. 参考前面官网SaaS版接口对应语言的代码进行修改:
    • 请求url:改为http://ip:port/api/ResumeMatcher(替换为实际的ip和port),比如http://localhost:2015/api/ResumeMatcher;
    • 请求接口:
      • headers字段:去掉headers中的uid和pwd字段;
      • ocr_type字段:根据配置的OCR服务进行选择
        • ocr_type=0:百度OCR;
        • ocr_type=1:腾讯OCR;
        • ocr_type=2:阿里读光OCR;
        • ocr_type=5:自定义OCR;
    • 返回接口:返回接口中无account字段信息,其他字段均一致;

3、阿里云接口示例


阿里云接口AppCode验证方式和官网接口差不多,使用Authorization替换headers中的uid和pwd即可。具体说明如下:

  1. 通过阿里云接口地址购买账号;
  2. 进入阿里云控制台 / 云市场 / 已购买的服务,找到对应的AppCode信息;
  3. 参考前面官网SaaS版接口对应语言的代码进行修改:
    • 请求url:http://alimatch.market.alicloudapi.com/ResumeMatch
    • 请求接口:将headers中的uid和pwd字段换成Authorization字段:key="Authorization",value="APPCODE " + 你的AppCode;
    • 返回接口:返回接口中无account字段信息,其他字段均一致;

Python

阿里云接口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代码。


<?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);
?>