简历解析步骤(第二步)技术与实现(7)识文字,做分类: 身份证号 、 民族 、 国籍

448 阅读4分钟

简历解析步骤(第二步)技术与实现(7)识文字,做分类: 身份证号 、 民族 、 国籍

继上篇文章理论:

简历解析,常见接收到的简历是图片或文档的方式,我们需要先将简历中的文字提取出来,然后再对文字进行算法分析以及AI训练,从而实现解析简历与提高解析度的效果。

先介绍我们整个解析过程和训练过程需要用到的技术:

  1. 文字识别:OCR服务(百度 AI 开放平台:通用文字识别)
  2. 算法(伪代码:不限语言)
  3. AI 机器学习 (ML.NET 或者 Python 一些算法库)

步骤: 第一步:通过文字识别的方式,提取出里面所有有价值的内容(可以转换的所有信息:因为本次讲解都是中文,所以接下来都以解析中文简历来作为例子)第二步:通过算法进行识别,找到符合要求的信息如:姓名、性别、年龄、学历、工作经历等。第三步:将识别出来的信息进行本地存储,然后通过人工去纠正错误,将该版本作为样板,交由机器学习算法进行学习运算,计算出模型。第四步:将得出来的模型再识别简历达到一定的量,再纠错,再交由机器学习算法进行学习运算,反复学习,直至通过率接近 100%。

步骤实现:

第一步:识文字,取信息

细节可以参考上一篇文章

第二步:识文字,做分类

我们通过百度云读取出来的文字信息,是一个区域一个区域的字符串。这个时候,我们要将这些字符串做一些分类:基本信息(38项)

#1. 姓名 2. 姓氏 3. 性别 4. 年龄 5. 身高 6. 体重 7. 婚姻状态 8. 出生日期 9. 户口地址 10. 籍贯地址 11. 身份证号 12. 民族 13. 国籍 14. 政治面貌 15. 语言能力 16. 英语水平 17. 计算机水平 18. 博客/主页地址 19. 工作年限 20. 参加工作时间 21. 当前职位(如果没离职:当前公司的职位,如果离职:上一家公司的职位) 22. 当前职能类型 23. 当前单位 24. 所处行业 25. 在职状态 26. 当前薪资 27. 工作地点 28. 工作性质(全职、兼职、实习) 29. 有否海外留学经历 30. 有否海外工作经历 31. 毕业时间 32. 毕业学校 33. 毕业学校类型 34. 所学专业 35. 学历 36. 是否统招

身份证状态分类:(核心代码如下)配合识别出来的文字使用

/// <summary>
///     验证身份证
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationIdentityCards(string words)
{
    List<string> resultInfo = new List<string>(); ;
    // 情况:身份证:X,这种半格式文本情况下,基本可以百分百确定“:”后面是身份证
    if (words.Contains("身份证"))
        resultInfo.Add(words);
    // 只有数值:如 1100XX1990XXXXXXXX , 这里的 X 表示数值
    // 先匹配 19 或 20,代表着两个世纪出生的人
    if (words.Contains("19")|| words.Contains("20"))
        resultInfo.Add(words);

    return resultInfo;
}

民族分类:(核心代码如下)配合识别出来的文字使用

/// <summary>
///     验证民族
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationRace(string words)
{
    //获取所有省份信息:
    string allRace = "汉、蒙古、回、藏、维吾尔、苗、彝、壮、布依、朝鲜、满、侗、瑶、白、土家、哈尼、哈萨克、傣、黎、僳僳、佤、畲、高山、拉祜、水、东乡、纳西、景颇、柯尔克孜、土、达斡尔、仫佬、羌、布朗、撒拉、毛南、仡佬、锡伯、阿昌、普米、塔吉克、怒、乌孜别克、俄罗斯、鄂温克、德昂、保安、裕固、京、塔塔尔、独龙、鄂伦春、赫哲、门巴、珞巴、基诺";
    List<string> allRaces = allRace.Split(new string[] { "、" }, StringSplitOptions.RemoveEmptyEntries).ToList();
    
    List<string> resultInfo = new List<string>(); ;
    // 情况:民族:X,这种半格式文本情况下,基本可以百分百确定“:”后面是民族
    if (words.Contains("民族"))
        resultInfo.Add(words);
    if (words.Contains("族"))
        resultInfo.Add(words);
    foreach (var item in allRaces)
    {
        if (item.Length <= 10)
        {
            if (words.Contains(item))
                resultInfo.Add(words);
        }
    }
    return resultInfo;
}

国籍分类:(核心代码如下)配合识别出来的文字使用

关于国籍分类这块很特殊,目前的想法是如果前面的户籍地址、籍贯、身份证信息中判断,这样的话,只能判断中国或者非中国。

要源码的,评论区留下邮箱,或者加qq群:546496965