jm56

博客园 首页 新随笔 联系 订阅 管理
  72 随笔 :: 0 文章 :: 0 评论 :: 1255 阅读

团队冲刺1
今天寻找可以使用算法,尝试实现简历分析,同时去找简历分析的接口,准备通过接口进行简历分析,同时简单讨论接口的一些问题。

学习阿里云接口调用与分析,今天团队主要任务是分析如何将简历文档数据调入后提取其关键字,下一步计划便是对关键字进行推算,我们尝试了阿里云的接口,团队任务为三人同时寻找其方法。本项目较小,因此大多方面都是共同进行相同工作,一起学习相关知识,率先找到疑似可行方法的便分享出来共同讨论尝试。
我们最终找到了通过使用阿里云接口这个方法。

昨天完成了流程化分析,认领了每个人的该完成模块任务,花费了两个小时。
今日完成了resumesdk的接口调用测试,能够在后端初步将简历分析出来结果
问题:json的数据格式太大,字典集的嵌套太复杂,还需要做数据拆分,前端的文件上传不能固定在本地文件夹里,要根据不同的用户导入简历文件更改路径。还要将解析的数据导入到数据库并上传到前端.

团队冲刺2
今天团队学习如何调用接口,并对简历分析,来实现简历分析功能,实际完成的过程中的诸多问题团队通过互联网资料逐步解决。

 

昨日任务:json数据的拆分,花了五个小时完成还有八天

 JSONObject json = new JSONObject();
        json.put("file_name", fname);    // 文件名
        json.put("file_cont", data);    // 经base64编码过的文件内容
        json.put("need_avatar", 1);        // 是否需要解析头像
        json.put("ocr_type", 1);        // 1为高级ocr
        StringEntity params = new StringEntity(json.toString(), Consts.UTF_8);
        httpPost.setEntity(params);

        // 发送请求
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response = httpclient.execute(httpPost);

        // 处理返回结果
        String resCont = EntityUtils.toString(response.getEntity(), Consts.UTF_8);
        //System.out.println(resCont);
        JSONObject resdemo = new JSONObject(resCont);
         com.alibaba.fastjson.JSONObject res = JSON.parseObject(resCont);


       //预估薪水的字典提取
        String eval = res.getString("eval");
        //System.out.println(eval);
        //com.alibaba.fastjson.用来声明使用的是哪一个jsonobject包!!!!
        com.alibaba.fastjson.JSONObject jsonObjects= JSON.parseObject(eval);
        String salary = jsonObjects.getString("salary");
        System.out.println("预估工资:"+salary);


今日任务:前端的绘制:
问题:没有合适的css样式,不知道如何将前端的简历文件上传到后端,让后端解析,后端可以实现,但是不知道如何才能将前端的简历放到后端的解析路径之中

今天,由曾雨坤带头下,我们做出了通过调用接口然后完成后端的简历分析
由此,我们进行下一任务的分析,借来的目标为实现前端文件上传,并且获取其路径传入此代码页面,目前,我主要进行对前端上传文件获取其路径进行学习,同时对前端具体功能反馈进行测试调试

import java.io.File;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.Consts;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;

public class TestParseAli {

public static void testParser(String url, String fname, String appcode) throws Exception {
// 设置头字段
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Authorization", "APPCODE " + appcode);
httpPost.addHeader("Content-Type", "application/json; charset=UTF-8");
httpPost.addHeader("Content-Type", "application/json");

// 读取简历内容
byte[] bytes = org.apache.commons.io.FileUtils.readFileToByteArray(new File(fname));
String data = new String(Base64.encodeBase64(bytes), Consts.UTF_8);

// 设置内容信息
JSONObject json = new JSONObject();
json.put("file_name", fname); // 文件名
json.put("file_cont", data); // 经base64编码过的文件内容
json.put("need_avatar", 0); // 是否需要解析头像
json.put("ocr_type", 1); // 1为高级ocr
StringEntity params = new StringEntity(json.toString(), Consts.UTF_8);
httpPost.setEntity(params);

// 发送请求
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httpPost);

// 处理返回结果
String resCont = EntityUtils.toString(response.getEntity(), Consts.UTF_8);
System.out.println(resCont);

JSONObject res = new JSONObject(resCont);
System.out.println(res.toString(4));
}

public static void main(String[] args) throws Exception {
String url = "http://resumesdk.market.alicloudapi.com/ResumeParser";
String fname = "D:/resumeSDK/test_files/yaoming.doc"; //替换为你的文件名
String appcode = "你的appcode";

testParser(url, fname, appcode);
}
}



团队冲刺3
今天尝试进行前端上传文件并简略提取,首先尝试完成TXT文件的上传,中间遇到了一些困难,如前后端的连接等,通过查询资料最终完成txt的上传。

今日完成了字段的提取,前端绘制
明日任务:全部字段提取并保存到数据库
问题:今日暂时无问题

今天,我将前端页面进行了简单设计以及排版状况进行设计
通过此方法,我们成功将前端文件路径获取传给后端,实现了在控制台显示简历分析,下一步问题,如何将后端数据传入前端

 

团队冲刺4
今天团队实现前端上传文件提取路径,通过路径进行上传文件。
今天团队实现对相应字端取舍保留,让简历分析更加合适,将重点内容合理的展示出来,去除掉一些杂乱无用的内容。
同时今天实现了除了txt文件外,word文件的上传,同时对word文件进行分析的功能。

今天优化了前端排版,同时对后端数据取舍更新做出了优化,完成了技能标签岗位推荐等设置,对部分字段的取舍进行了选择,本次中,我们决定对于主页信息提取与字段保留
在简历基础信息上,我们选择针对其简历完整度的评价进行了估算保留,前端显示了其简历提交时间,运用            <img alt="" src="" style="width:93px;height:131px;padding:3px; margin:25px 0px 0px 0px;border:1px solid #ddd; _margin-top:20px; *margin-top:20px;" />我们成功获取了其简历中头像的信息,src路径为其图片上传后经过分析显示的编码,便可以显示其头像,保留了其基础信息,个人基本信息,教育经历,活动经历以及个人技能特点以及曾获取何类证书等显著重要信息。在智能评估方面进行了对其个人工资的大数据推算以及个人期望工资的展示,在推荐岗位上也保留了部分岗位推荐,软件依然需要优化。
今日站立会议:我们总结了优化方面的问题,以及更多关于简历分析的字段取舍增加,简历分析应当找出大众简历的特点并且直观展示大部分人的简历关键信息特点,注重相应的结合。遵从为多数人服务

昨日任务:字段提取,新建了bean类存放字段解析结果
问题:前端的布局优化,其次是想用循环遍历字典里的每一个字段,并且获取保存,但简历里的字段因人而异,不知道如何统一某些可能会消失的字段
今日任务:第二个界面的前端绘制

package com.zyk.bean;

public class People {
  private  String name;
  private  String age;
  private  String grad_time ;
  private  String phone ;
  //race==民族
  private  String race;
  private  String gender ;
  private  String college;
  private  String major;
  private  String birthday;
  private  String living_address_norm;
   private String qq;
   private String email;
   private String cont_campus_exp;
   private String polit_status;
   private String cont_education;
   private String resume_parse_tim;
   private String avatar_data;
   private  String salary;
   //毕业时间end_date
   private  Object end_date;
    //教育经历edu_content
   private Object edu_content;
    //婚姻状况marital_status
   private String marital_status;

    public People(String name, String age, String grad_time, String phone, String race, String gender, String college, String major, String birthday, String living_address_norm, String qq, String email, String cont_campus_exp, String polit_status, String cont_education, String resume_parse_tim, String avatar_data) {
        this.name = name;
        this.age = age;
        this.grad_time = grad_time;
        this.phone = phone;
        this.race = race;
        this.gender = gender;
        this.college = college;
        this.major = major;
        this.birthday = birthday;
        this.living_address_norm = living_address_norm;
        this.qq = qq;
        this.email = email;
        this.cont_campus_exp = cont_campus_exp;
        this.polit_status = polit_status;
        this.cont_education = cont_education;
        this.resume_parse_tim = resume_parse_tim;
        this.avatar_data = avatar_data;
    }

    public People(String name, String age, String grad_time, String phone, String race, String gender, String college, String major, String birthday, String living_address_norm) {
        this.name = name;
        this.age = age;
        this.grad_time = grad_time;
        this.phone = phone;
        this.race = race;
        this.gender = gender;
        this.college = college;
        this.major = major;
        this.birthday = birthday;
        this.living_address_norm = living_address_norm;
    }

    public People(String name, String age, String grad_time, String phone, String race, String gender, String college, String major, String birthday, String living_address_norm, String qq, String email, String cont_campus_exp, String polit_status, String cont_education, String resume_parse_tim, String avatar_data, String salary, Object end_date, Object edu_content, String marital_status) {
        this.name = name;
        this.age = age;
        this.grad_time = grad_time;
        this.phone = phone;
        this.race = race;
        this.gender = gender;
        this.college = college;
        this.major = major;
        this.birthday = birthday;
        this.living_address_norm = living_address_norm;
        this.qq = qq;
        this.email = email;
        this.cont_campus_exp = cont_campus_exp;
        this.polit_status = polit_status;
        this.cont_education = cont_education;
        this.resume_parse_tim = resume_parse_tim;
        this.avatar_data = avatar_data;
        this.salary = salary;
        this.end_date = end_date;
        this.edu_content = edu_content;
        this.marital_status = marital_status;
    }

    public People(String name, String age, String grad_time, String phone, String race, String gender, String college, String major, String birthday, String living_address_norm, String qq, String email, String cont_campus_exp, String polit_status, String cont_education, String resume_parse_tim) {
        this.name = name;
        this.age = age;
        this.grad_time = grad_time;
        this.phone = phone;
        this.race = race;
        this.gender = gender;
        this.college = college;
        this.major = major;
        this.birthday = birthday;
        this.living_address_norm = living_address_norm;
        this.qq = qq;
        this.email = email;
        this.cont_campus_exp = cont_campus_exp;
        this.polit_status = polit_status;
        this.cont_education = cont_education;
        this.resume_parse_tim = resume_parse_tim;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getGrad_time() {
        return grad_time;
    }

    public void setGrad_time(String grad_time) {
        this.grad_time = grad_time;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getRace() {
        return race;
    }

    public void setRace(String race) {
        this.race = race;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getCollege() {
        return college;
    }

    public void setCollege(String college) {
        this.college = college;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getLiving_address_norm() {
        return living_address_norm;
    }

    public void setLiving_address_norm(String living_address_norm) {
        this.living_address_norm = living_address_norm;
    }

    public String getQq() {
        return qq;
    }

    public void setQq(String qq) {
        this.qq = qq;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getCont_campus_exp() {
        return cont_campus_exp;
    }

    public void setCont_campus_exp(String cont_campus_exp) {
        this.cont_campus_exp = cont_campus_exp;
    }

    public String getPolit_status() {
        return polit_status;
    }

    public void setPolit_status(String polit_status) {
        this.polit_status = polit_status;
    }

    public String getCont_education() {
        return cont_education;
    }

    public void setCont_education(String cont_education) {
        this.cont_education = cont_education;
    }

    public String getResume_parse_tim() {
        return resume_parse_tim;
    }

    public void setResume_parse_tim(String resume_parse_tim) {
        this.resume_parse_tim = resume_parse_tim;
    }

    public String getAvatar_data() {
        return avatar_data;
    }

    public void setAvatar_data(String avatar_data) {
        this.avatar_data = avatar_data;
    }

    public String getSalary() {
        return salary;
    }

    public void setSalary(String salary) {
        this.salary = salary;
    }

    public Object getEnd_date() {
        return end_date;
    }

    public void setEnd_date(Object end_date) {
        this.end_date = end_date;
    }

    public Object getEdu_content() {
        return edu_content;
    }

    public void setEdu_content(Object edu_content) {
        this.edu_content = edu_content;
    }

    public String getMarital_status() {
        return marital_status;
    }

    public void setMarital_status(String marital_status) {
        this.marital_status = marital_status;
    }

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", grad_time='" + grad_time + '\'' +
                ", phone='" + phone + '\'' +
                ", race='" + race + '\'' +
                ", gender='" + gender + '\'' +
                ", college='" + college + '\'' +
                ", major='" + major + '\'' +
                ", birthday='" + birthday + '\'' +
                ", living_address_norm='" + living_address_norm + '\'' +
                ", qq='" + qq + '\'' +
                ", email='" + email + '\'' +
                ", cont_campus_exp='" + cont_campus_exp + '\'' +
                ", polit_status='" + polit_status + '\'' +
                ", cont_education='" + cont_education + '\'' +
                ", resume_parse_tim='" + resume_parse_tim + '\'' +
                ", avatar_data='" + avatar_data + '\'' +
                ", salary='" + salary + '\'' +
                ", end_date=" + end_date +
                ", edu_content=" + edu_content +
                ", marital_status='" + marital_status + '\'' +
                '}';
    }
}



团队冲刺5
今天团队进行后端分析值如何将其获取:是直接获取还是调用数据库,团队通过长时间的讨论,最后决定直接获取。
同时今日实现了pdf文件的上传分析。

今天,在一阶段,主要完成了简历信息获取后的前端页面制作以及排版,同时,在选取api以及前端如何上传文件并且获取,是直接在前端进行预览还是在servlet层中获取其文件进行下一步分析,我们团队三人都进行了相应的了解学习,同时也遇到了很多问题,在前端上传文件并且获取方面。我们在网络上搜集相关资料,既有有关springboot或者vue甚至使用python框架的web下的django或者flask对进行了基础了解与取舍。由于第一次接手此类项目,我们不知道其需要的类型知识,只能一点一点搜索如何解决。
后来,我们发现了网上的现有简历分析模板,这对我们的影响是很大的,感谢resumesdk的作者,给我们对于这个项目有了很大的思路构想方面的支持。也正是参考其文档,我们才得以突破最核心的内容,如何大数据推算演算简历具体信息
这些样式都对我们后来的开发有了很大的帮助与支持,我们决定运用其阿里云开发文档,在成功申请以及使用其简历系统能够进行简历分析后,我们已经实现了相应的修改本地文件路径,解析其简历,随后我遇到的问题主要是,对于不同的人的简历,每个人信息多少不一,前端应该可以根据其信息增加自然增加相应内容,但是到最后也没有学会这里,只能通过对多份简历的分析联系,决定保留最大众化,最能凸显其个人特点能力的字段信息做了保留。同时在如何获取解析其人像照片上,也遇到了相应问题,不过最终也算是都解决了。

 


这里的智能标签展示依旧是我学习的方向,接收后端内容,根据后端内容的增加添加文字数据。
团队冲刺6
今天团队实现了后端值传入前端的功能,可以正常的进行简历分析结果的输出到前端的功能。
同时对前端做了一个简单改动,让其可以合理展示输出内容。
团队冲刺7
今天对前端进行优化,让前端更加的美观得体。
同时优化了前端的使用,使得使用者使用起来更加的方便快捷。

 站立会议:

 

 

 

演示视频:https://www.bilibili.com/video/BV1FM41157U2/

三人各自分工:

曾雨坤主攻后端自己接收读取出来json值

赵设计前端排版以及前端流程页面还有接收后端值传前端

崔建铭整理博客,总结内容,明确需求,以及前端获取文件和个性标签

posted on   博客—铭  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示