40

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

 3 years ago
source link: https://blog.popkx.com/python-project-recognize-word-in-pictures-fill-in-excel/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

最近有朋友进入公司实习,抱怨工作太累。她的工作内容是把很多人的工作简历信息,按照条目输入电脑的 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)

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK