简历解析第三方OCR识别介绍

本文介绍了在简历解析中如何利用OCR技术,重点讲解了Tesseract的安装与使用,以及EasyOCR和PaddleOcr的特点。通过实例比较,展示它们在识别汉字和英文方面的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前情提要

经过上一篇的数据收集,我们已经有了足够做简历解析的数据,在开始解析简历内容前,您还需要OCR识别。
什么是OCR识别,以及为什么简历解析需要OCR识别呢?下面来做介绍。

OCR介绍

  将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。可以实现OCR 的底层库并不多,目前很多库都是使用共同的几个底层OCR 库,或者是在上面进行定制。

如何体现

简历解析时我们一般上传HTML,pdf,doc,docx,图片等格式的文档进行解析,HTML,pdf,doc,docx我们可以凭借第三方工具直接拿到文本,图片我们往往不能直接拿到文本,这时就需要OCR识别去识别图片中的文本。下面介绍我们如果不调用第三方OCR接口,自己实现OCR如何去做。主要围绕Tesseract,easyOCR,PaddleOcr等工具来说明

Tesseract介绍

Tesseract 是一个OCR 库,目前由Google 赞助(Google 也是一家以OCR 和机器学习技术闻名于世的公司)。Tesseract 是目前公认最优秀、最精确的开源OCR 系统。

  除了极高的精确度,Tesseract 也具有很高的灵活性。它可以通过训练识别出任何字体(只要这些字体的风格保持不变就可以),也可以识别出任何Unicode 字符。

Tesseract的安装与使用

1、安装pytesseract库

tesseract底层由c++开发,pytesseract是Tesseract关于Python的接口,可以使用pip install pytesseract安装。安装完后,就可以使用Python调用Tesseract了,不过,你还需要一个Python的图片处理模块,可以安装pillow。   

pip install pytesseract,pillow 即可。

2、安装pytesseract-ocr工具

       pytesseract库是python的函数库,其依赖于tesseract-ocr工具的运行,因此需要下载安装tesseract-ocr(tesseract),并将其与pytesseract库进行关联设置。注意:安装时应该选中中文包!

Windows 用户

Tesseract的Windows安装包下载地址为:Home · UB-Mannheim/tesseract Wiki · GitHub

分为32位,64位下载对应版本即可。下载后双击直接安装即可。安装完后,需要将Tesseract添加到系统变量中。在CMD中输入tesseract -v, 如显示以下界面,则表示Tesseract安装完成且添加到系统变量中。

Linux 用户

Linux 用户可以通过apt-get 安装:sudo apt-get tesseract-ocr

Tesseract注意事项

用Tesseract可以识别格式规范的文字,主要具有以下特点:

• 使用一个标准字体(不包含手写体、草书,或者十分“花哨的”字体)

• 虽然被复印或拍照,字体还是很清晰,没有多余的痕迹或污点

• 排列整齐,没有歪歪斜斜的字

• 没有超出图片范围,也没有残缺不全,或紧紧贴在图片的边缘

• 彩色图片的识别效果没有黑白图片的效果好

Tesseract关联设置

在pytesseract安装路径下(路径一般为:....../lib/site-packages\pytesseract\pytesseract.py”)找到pytesseract.py文件,打开文件修改如下语句:

 上面的路径是pytesseract-ocr工具的安装路径。

Tesseract语言包安装

安装不同语言语言包。

官方提供GitHub - tesseract-ocr/tessdata: Trained models with support for legacy and LSTM OCR engine,下载zip包后放入tesseract-ocr工具包目录。

Tesseract本身也可以训练自己的语言包,进而扩展语言库。

https://pypi.tuna.tsinghua.edu.cn/simple

pip install paddlepaddle==2.0.1 -i https://mirror.baidu.com/pypi/simple

示例代码

import cv2





try:

    from PIL import Image

except ImportError:

    import Image

import pytesseract



def recognizeCode():

    im = Image.open("kll.png")

    im = cv2.imread("kll.png")

    text = pytesseract.image_to_string(im, lang='chi_sim')

    print(text)

需要安装opencv或者pillow

EasyOcr介绍

EasyOCR是一款用python语言编写的OCR第三方库,同时支持GPU和CPU,还提供了可直接运行的命令行工具,目前已经支持超过70种语言,当然,中文也是支持的,项目地址是: GitHub - JaidedAI/EasyOCR: Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.

示例代码:

if __name__ == '__main__':

    # recognizeCode()



    import easyocr



    reader = easyocr.Reader(['ch_sim', 'en'])



    text = reader.readtext('3.jpg', detail=0)



    print(text)

对比

经实际操作后发现,对于汉字较多的图片,未经过训练的tesseract识别精准度远远没有easyocr精准度高,然而,tesseract对于英文的识别精准度高于easyocr。

PaddleOcr介绍

PaddleOCR 是基于飞桨的 OCR 工具库,包含总模型仅8.6M的超轻量级中文 OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测、文本识别的训练算法。

项目地址:OCR

示例代码:

# encoding: utf-8

import cv2 as cv

from paddleocr import PaddleOCR



def ocr_img(ocr, img):

    img_rest = None

    if img.shape[0] > 2000:

        img_rest = img[2000:, :]

        img = img[0:2000, :]

    text = ocr.ocr(img, cls=True)  # 打开图片文件

    # 打印所有文本信息

    for t in text:

        print(t[1][0])

    if img_rest is not None:

        ocr_img(ocr, img_rest)





if __name__ == '__main__':



    ocr = PaddleOCR(use_angle_cls=True, use_gpu=False)  # 使用CPU预加载,不用GPU

    img = cv.imread("2.png")



    ocr_img(ocr, img)

经实际验证发现,paddleOcr只能识别高度2000px以内的图片,超过2000px就需要剪切图片,并循环读取,每次读取2000px,直到最后一次读取小于2000px为止。

识别的图片:

运行结果:

[2022/07/05 18:56:13] ppocr DEBUG: Namespace(alpha=1.0, benchmark=False, beta=1.0, cls_batch_num=6, cls_image_shape='3, 48, 192', cls_model_dir='C:\\Users\\admin/.paddleocr/whl\\cls\\ch_ppocr_mobile_v2.0_cls_infer', cls_thresh=0.9, cpu_threads=10, crop_res_save_dir='./output', det=True, det_algorithm='DB', det_db_box_thresh=0.6, det_db_score_mode='fast', det_db_thresh=0.3, det_db_unclip_ratio=1.5, det_east_cover_thresh=0.1, det_east_nms_thresh=0.2, det_east_score_thresh=0.8, det_fce_box_type='poly', det_limit_side_len=960, det_limit_type='max', det_model_dir='C:\\Users\\admin/.paddleocr/whl\\det\\ch\\ch_PP-OCRv2_det_infer', det_pse_box_thresh=0.85, det_pse_box_type='quad', det_pse_min_area=16, det_pse_scale=1, det_pse_thresh=0, det_sast_nms_thresh=0.2, det_sast_polygon=False, det_sast_score_thresh=0.5, draw_img_save_dir='./inference_results', drop_score=0.5, e2e_algorithm='PGNet', e2e_char_dict_path='./ppocr/utils/ic15_dict.txt', e2e_limit_side_len=768, e2e_limit_type='max', e2e_model_dir=None, e2e_pgnet_mode='fast', e2e_pgnet_score_thresh=0.5, e2e_pgnet_valid_set='totaltext', enable_mkldnn=False, fourier_degree=5, gpu_mem=500, help='==SUPPRESS==', image_dir=None, ir_optim=True, label_list=['0', '180'], lang='ch', layout_label_map=None, layout_path_model='lp://PubLayNet/ppyolov2_r50vd_dcn_365e_publaynet/config', max_batch_size=10, max_text_length=25, min_subgraph_size=15, mode='structure', ocr_version='PP-OCRv2', output='./output', precision='fp32', process_id=0, rec=True, rec_algorithm='CRNN', rec_batch_num=6, rec_char_dict_path='E:\\Python38\\lib\\site-packages\\paddleocr\\ppocr\\utils\\ppocr_keys_v1.txt', rec_image_shape='3, 32, 320', rec_model_dir='C:\\Users\\admin/.paddleocr/whl\\rec\\ch\\ch_PP-OCRv2_rec_infer', save_crop_res=False, save_log_path='./log_output/', scales=[8, 16, 32], show_log=True, structure_version='STRUCTURE', table_char_dict_path=None, table_char_type='en', table_max_len=488, table_model_dir=None, total_process_num=1, type='ocr', use_angle_cls=True, use_dilation=False, use_gpu=False, use_mp=False, use_onnx=False, use_pdserving=False, use_space_char=True, use_tensorrt=False, vis_font_path='./doc/fonts/simfang.ttf', warmup=False)

[2022/07/05 18:56:14] ppocr DEBUG: dt_boxes num : 37, elapse : 0.4443471431732178

[2022/07/05 18:56:15] ppocr DEBUG: cls num  : 37, elapse : 0.4598731994628906

[2022/07/05 18:56:17] ppocr DEBUG: rec_res num  : 37, elapse : 2.8309073448181152

14:21
X

简历预览

园基本信息

姓名已隐藏(保险勿扰)

女|23岁(1996/08/09)

未婚|3年工作经验

手机号码:

手机已隐藏

户口/国籍:

大连

求职状态:

目前正在找工作

邮箱:

邮箱已隐藏

居住地:

大连

年收入:

8万元

邑工作经验

2018/2一至今[1年6个月

人事主管后勤部

大连宝瑞轩拍卖有限公司

信托/担保/拍卖/典当|民营公司|50-150人

工作描述:

人事主管兼行政主管

1.考勤。统计员工出勤率,制作出勤表,协助计算薪资、

福利。

2.招聘。发布招聘启事、收集汇总应聘资料、安排面试人

员、跟踪落实面试人员情况,面试

3.培训。给新员工培训。

4.管理员工信息资料及编辑各类人事资料。

5.办理员工的入职,离职,签劳动合同。

6.员工保险的缴纳

[2022/07/05 18:56:18] ppocr DEBUG: dt_boxes num : 30, elapse : 0.3231930732727051

[2022/07/05 18:56:18] ppocr DEBUG: cls num  : 30, elapse : 0.3384261131286621

[2022/07/05 18:56:21] ppocr DEBUG: rec_res num  : 30, elapse : 3.2104573249816895

7.参加各个天小型招聘会。

8.公司的各种办公用品和其他东西的采买。

9.公司的水电费和其他费用的缴纳等等。

下属:5人「汇报人:总经理

离职原因:

个人原因。

2016/11-2018/2[1年3个月]

人事主管人事

大连共享股份

美容/保健|民营公司|50-150人

工作描述:

1.考勤。统计员工出勤率,制作出勤表,协助计算薪资、

福利。

2.招聘。发布招聘启事、收集汇总应聘资料、安排面试人

员、跟踪落实面试人员情况,初试。

3.培训。给新员工培训

4.管理员工信息资料及各类人事资料。

5.办理员工的入职,离职,签劳动合同

6.参加各个大小型招聘会。

2016/7-2016/9[2个月

人事专员|人事

北京携程

信托/担保/拍卖/典当|合资|150-500人

工作描述:

1.考勤。统计员工出勤率,制作出勤表,协助计算薪资、

福利。

2.招聘。发布招聘启事、收集汇总应聘资料、安排面试人

员、跟踪落实面试人员情况。

3.协助人事主管社保公积金缴纳工作。

4.管理员工信息资料及各类人事资料。

[2022/07/05 18:56:22] ppocr DEBUG: dt_boxes num : 28, elapse : 0.3017082214355469

[2022/07/05 18:56:22] ppocr DEBUG: cls num  : 28, elapse : 0.31179308891296387

[2022/07/05 18:56:23] ppocr DEBUG: rec_res num  : 28, elapse : 1.3785622119903564

教育经历

2014/9-2017/7

铁岭师范高等专科学校

大专|文秘

@求职意向

职能:

人事专员

,人事主管

,招聘经理/主管

,行政/后勤

职位:

人事专员

工作地点:

大连

期望薪资:

4000-6000元/月

到岗时间:

随时

工作类型:

全职

自我评价:

沟通交流能力较强,有上进心,好相处。

平安保险公司,什么保险都勿扰!!!

项目经验

2016/8一至今

招聘人才

所属公司:

大连共享股份

[2022/07/05 18:56:24] ppocr DEBUG: dt_boxes num : 17, elapse : 0.4566915035247803

[2022/07/05 18:56:24] ppocr DEBUG: cls num  : 17, elapse : 0.1980576515197754

[2022/07/05 18:56:26] ppocr DEBUG: rec_res num  : 17, elapse : 2.3873770236968994

项目描述:

1.考勤。统计员工出勤率,制作出勤表,协助计算薪资、

福利。

2.招聘。发布招聘启事、收集汇总应聘资料、安排面试人

员、跟踪落实面试人员情况

3.员工入职离职的办理。

4.参加各人大小型招聘会

5.协助人事主管社保公积金缴纳工作。

6.管理员工信息资料及各类人事资料。

7.打电话邀约客户。

金在校情况

校内职务

2014/10-2017/7

校学生会干部,院学生会干部,班级生活委员

职务描述:

学校和院里的公寓管理,班级的卫生和班费。







经过对别发现,未训练的paddleOcr明显效果好于前两者,同时对于长图的识别精确度也较高。

同样的长图,经过tesseract以及easyOcr识别已经乱码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eq0284

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值