1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > OCR识别扫描版PDF文件(Python版)

OCR识别扫描版PDF文件(Python版)

时间:2021-09-25 17:47:59

相关推荐

OCR识别扫描版PDF文件(Python版)

文章目录

概述扫描版PDF文字识别Tesseract OCR实现pdf文本识别tesseract-ocr安装与测试python实现基于tesseract的pdf文本识别百度 OCR实现pdf文本识别准备python实现基于百度OCR的pdf文本识别参考

概述

本文识别扫描版PDF文件(不是文字版)基本原理基于OCR识别。若要处理文字版OCR,百度pdfminer或pdfplumder等使用即可。

依赖:

应用程序tesseract-ocr https://digi.bib.uni-mannheim.de/tesseract/python库pytesseract、pdf2image

基本思路:

使用pdf2image.convert_from_path将pdf文件转化为png格式图片;通过pytesseract链接tesseract-ocr,使用pytesseract.image_to_string识别图像中的文字。

扫描版PDF文字识别

Tesseract OCR实现pdf文本识别

tesseract-ocr安装与测试

tesseract-ocr安装完成后,配置环境变量,即将tesseract的安装路径添加到‘path’系统变量; 配置完成后,在cmd窗口输入tesseract -v会显示配置成功信息。 识别简体中文需要下载chi_sim.traindata字库/tesseract-ocr/tessdata,注意,该字库仅支持Tesseract 4.0.0及更高版本;将下载好的字库放到Tesseract-OCR安装目录下的tessdata文件夹里;cmd中进入需要识别图片目录,执行tesseract *.png result -l eng将图片’*.png’的OCR结果保存至’result.txt’文件夹。-l参数为OCR识别语言,默认英语eng。 中文的识别效果不太理想,需要自己训练下。

python实现基于tesseract的pdf文本识别

import pytesseractfrom pdf2image import convert_from_pathimport osos.chdir(os.getcwd())def tess_ocr(fname, lang):# 将pdf转换为png后,保存在dirname文件夹dirname = fname.rsplit('.', 1)[0]if not os.path.exists(dirname):os.mkdir(dirname)images = convert_from_path(fname, fmt='png', output_folder=dirname)text = ''for img in images:text += pytesseract.image_to_string(img, lang=lang)with open('result.txt', 'w', encoding='utf-8') as f:f.write(text)return textfname = 'test.pdf'text = tess_ocr(fname, lang='chi_sim')

百度 OCR实现pdf文本识别

由于直接使用tesseract识别效果并不理想,尝试百度OCR。

准备

安装python库baidu-aip,pip install baidu-aip

在百度智能云创建文本识别应用,获得’APP_ID’ 、‘API_KEY’ 和’SECRET_KEY’ 字段;

标准版文字识别‘5000次/天免费’,一般是足够的。

python实现基于百度OCR的pdf文本识别

from pdf2image import convert_from_pathfrom aip import AipOcrimport osAPP_ID = '***'API_KEY = '***'SECRET_KEY = '***'client = AipOcr(APP_ID, API_KEY, SECRET_KEY)def baidu_ocr(fname):f = open('result.txt', 'w', encoding='utf-8')dirname = fname.rsplit('.', 1)[0]if not os.path.exists(dirname):os.mkdir(dirname)images = convert_from_path(fname, fmt='png', output_folder=dirname)for img in images:with open(img.filename, 'rb') as fimg: img = fimg.read() # 根据'PIL.PngImagePlugin.PngImageFile'对象的filename属性读取图片为二进制msg = client.basicGeneral(img)for i in msg.get('words_result'):f.write('{}\n'.format(i.get('words')))f.write('\f\n') f.close()baidu_ocr('1.pdf')

参考

Tesseract-OCR 安装、中文识别与训练字库pytesseract识别PDF文件中的文字(OCR)python3调用百度API–ocr实现图像/文字/验证码识别

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。