python实战项目,识别简历图片文字,并且填写到excel表中

最近有朋友进入公司实习,抱怨工作太累。她的工作内容是把很多人的工作简历信息,按照条目输入电脑的 excel 表里,简单,但是量大。正好,我们昨天才介绍了 python识别图中的文字,所以决定做一个自动工作帮帮她。

python实战项目,识别简历,并且填入 excel 总体流程


其实流程很简单,就是将简历拍照,发送给程序,程序识别出文字,正则匹配出相关信息,填写入 excel 对应栏目。

由于之前的几篇博客,已经比较清晰的介绍了 python识别图中的文字python正则表达式的使用,所以,咱们只详细介绍一下 python操作excel 和整体流程。

python实战项目,操作 excel


python 操作 excel 的方法还是非常多的。这里介绍使用 python 的 xlwt 库。

1. xlwt 库的安装

xlwt 库的安装非常简单,执行

pip install xlwt

即可,测试能否正常导入,发现是正常的。

$ python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import xlwt
>>> exit()

2. xlwt 的使用

本着实用性原则,因为咱们将只用到写入,所以只介绍写入,以 代码+注释 的形式介绍,会比较清楚:


# -*- coding: utf-8 -*- #文件名 test.py #导入xlwt模块 import xlwt # 创建一个Workbook对象,这就相当于创建了一个Excel文件 book = xlwt.Workbook(encoding='utf-8', style_compression=0) #创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。 # 在电脑桌面右键新建一个Excel文件,其中就包含sheet1,sheet2,sheet3三张表 sheet = book.add_sheet('test', cell_overwrite_ok=True) # 其中的test是这张表的名字,cell_overwrite_ok,表示是否可以覆盖单元格,其实是Worksheet实例化的一个参数,默认值是False # 向表test中添加数据 sheet.write(0, 0, 'www.xrkzn.cn') # 其中的'0-行, 0-列'指定表中的单元,'EnglishName'是向该单元写入的内容 sheet.write(1, 0, 'xrkzn') txt1 = '向日葵智能' sheet.write(0, 1, txt1.decode('utf-8')) # 此处需要将中文字符串解码成unicode码,否则会报错 txt2 = 'python实战项目' sheet.write(1, 1, txt2.decode('utf-8')) # 最后,将以上操作保存到指定的Excel文件中 book.save(r'./test1.xls') # 在字符串前加r,声明为raw字符串,这样就不会处理其中的转义了。否则,可能会报错

在执行脚本前,我们先创建一个 execl 文件 test1.xls 放在 test.py 文件同目录,然后运行脚本,得到:

python实战项目,识别简历,自动填写 excel


1. 识别简历内容

这个,咱们前面的博客已经说的比较清楚了,可以再翻回去看看:python识别图中的文字。这里咱们做一下小小的改动,将文字集中在一起:

# encoding:utf-8
import base64
import urllib
import urllib2, json
from token import GetToken

'''
文字识别
'''

url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"


def OcrRecg(fileName):
    # 二进制方式打开图片文件
    f = open(fileName, 'rb')
    img = base64.b64encode(f.read())

    params = {"image":img}
    params = urllib.urlencode(params)

    access_token = GetToken()
    request_url = url + "?access_token=" + access_token
    print request_url
    request = urllib2.Request(url=request_url, data=params)
    request.add_header('Content-Type', 'application/x-www-form-urlencoded')
    response = urllib2.urlopen(request)
    content = response.read()
    res = ""
    if content:
        js = json.loads(content)
        for i in range(0, js['words_result_num']):
            res = res + (js['words_result'][i]['words'])
        return res
    return None

2. 保存到 excel 表

按照上面的 python 操作 excel 示例,咱们这里把存到 excel 的动作,写成一个函数,最终,全部代码如下,值得说明的是,这里只是示范,代码只是 demo 级,希望和大家交流,也算是做个笔记。提取信息的部分,用到了 python正则表达式

# encoding:utf-8
import base64
import xlwt, re
import urllib
import urllib2, json
from token import GetToken

'''
文字识别
'''

url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"


def OcrRecg(fileName):
    # 二进制方式打开图片文件
    f = open(fileName, 'rb')
    img = base64.b64encode(f.read())

    params = {"image":img}
    params = urllib.urlencode(params)

    access_token = GetToken()
    request_url = url + "?access_token=" + access_token
    print request_url
    request = urllib2.Request(url=request_url, data=params)
    request.add_header('Content-Type', 'application/x-www-form-urlencoded')
    response = urllib2.urlopen(request)
    content = response.read()
    res = ""
    if content:
        js = json.loads(content)
        for i in range(0, js['words_result_num']):
            res = res + (js['words_result'][i]['words'])
        return res
    return None

def SaveExcel(content):
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    sheet = book.add_sheet('test', cell_overwrite_ok=True)
    sheet.write(0, 0, "姓名")         # 提取这几条信息为示范
    sheet.write(0, 1, "出生年月")
    sheet.write(0, 2, "毕业院校")
    sheet.write(0, 3, "专业")
    sheet.write(0, 4, "电话")

    # pattern = re.compile(u'姓名:(.*?)性别', re.S);
    pattern = re.compile(u'姓名:(.*?)性别.*?出生年月:(.*?)学历.*?毕业院校:(.*?)专业:(.*?)现居住地.*?电话:(.*?)Q', re.S);
    result = pattern.findall(content)
    i = 0
    for item in result[0]:
        print item
        sheet.write(1, i, item)
        i = i+1
    book.save(r'./test1.xls')   #保存到 test1.xls


if __name__ == "__main__":
    pic = "pic/2.jpg"   # 这里写咱们要识别的图片名字
    res = OcrRecg(pic)
    # print res
    SaveExcel(res)

3. 测试

代码写完了,可以测试了,找到一张简历如图:

运行咱们的脚本,发现想要的简历信息提取出来了,并且自动存到 excel 表里了。

成功了!
阅读更多:   Python
已有 2 条评论
  1. 事儿爸杂说

    感谢分享,目前市面上有类似的自动识别App吗?

    1. 我也没有在市面上发现类似的商用 app,计划后续增加更加简单易用的 app,就发在这里吧。。。看看啥时候有时间 icon_mrgreen.gif

添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif