广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现PDF文字识别提取并写入CSV文件
  • 438
分享到

Python实现PDF文字识别提取并写入CSV文件

2024-04-02 19:04:59 438人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1.前言2.需求描述3.开始动手动脑3.1安装相关第三方包3.2导入需要用到的第三方库3.3读取pdf文件,并识别内容3.4对识别的数据进行处理,写入csv文件总结1. 前言 扫

1. 前言

扫描件一直受大众青睐,任何纸质资料在扫描之后进行存档,想使用时手机就能打开,省心省力。但是扫描件的优点也恰恰造成了它的一个缺点,因为是通过电子设备扫描,所以出来的是图像,如果想要处理文件上的内容,直接操作是无法实现的。

那要是想要引用其中的内容怎么办呢?别担心,python帮你解决问题。

2. 需求描述

现有一份pdf扫描件,我们想把其中的文字提取出来并且分三列写入csv文档,内容及效果如下:

pdfexample

csvexample

3. 开始动手动脑

pdf扫描件是文档扫描成电脑图片格式后转化成的,提取其中的文字就相当于识别图片内的文字。所以,我们的工作就是将pdf转成图片,再用ocr工具提取图片中的文字。

3.1 安装相关第三方包

pip3 install pdf2image pytesseract

3.2 导入需要用到的第三方库

import os   #处理文件
from pdf2image import convert_from_path  # pdf转图片
import pytesseract  # 识别图片文字
import csv  # 处理csv文件

3.3 读取pdf文件,并识别内容

tess_ocr(pdf_path, lang, first_page, last_page)

将pdf文件拆分成图片,并提取文字写入文本文件

  • pdf_path:pdf文件的存储路径
  • image:代表PDF文档每页的PIL图像列表
  • first_page :允许设置由pdftoppm处理的第一个页面;
  •  last_page:允许设置最后一页由pdftoppm处理
  •  fmt:允许指定输出格式。目前支持的格式是jpg、png和ppm;
  • output_folder:图片保存路径
def tess_ocr(pdf_path, lang,first_page,last_page):
  # 创建一个和pdf同名的文件夹
   images = convert_from_path(pdf_path, fmt='png',first_page=first_page,last_page=last_page,output_folder=imagefolder,userpw='site')  # 转成图片
  text = ''
  for img in images:    
       text += pytesseract.image_to_string(img, lang=lang) # 识别图片文字  
       with open(r'example\data.txt' 'a', encoding='utf-8') as f: #写入txt文件
       f.write(text)

运行结果

生成一个同名的文件夹存放拆分的图片,接着提取图片文字写入data.txt

运行问题

问题抛出1:

pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH? 

解决措施:下载 poppler。

>1 方法一:设置环境变量  poppler/bin;

>2 方法二:

参数指定绝对路径:

images = convert_from_path(pdf_path=pdf_file_path, poppler_path=r'poppler中bin文件所在地址')

问题抛出2:

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more infORMation.  

解决措施:额外下载安装tesseract-ocr并配置环境变量。

3.4 对识别的数据进行处理,写入csv文件

modification(infile, outfile)

清洗生成的文本文档

  •  infile:需要进行处理的文件地址
  •  outfile:处理后生成的新文件的地址              
def modification(infile, outfile):
  infp = open(infile, "r",encoding='utf-8')
  outfp = open(outfile, "w",encoding='utf-8')
  lines = infp.readlines() #返回列表,包含所有的行。
  #依次读取每行
  for li in lines:  
    if li.split():             #str.split(str="", num=string.count(str)),过滤文件中的空行  
      # 根据识别情况对数据进行清洗  
      li = li.replace('[', ' ').replace(']', '')  
      outfp.writelines(li)    
  infp.close()
  outfp.close()


运行结果

生成一个新的txt文件,新文件删除了data.txt中的空行,将原文件中错误识别的内容替换成正确的。

writercsv(intxt,outcsv)

将文本文件按空格分列写入csv表格

  • intxt:文本文件地址
  • outcsv:新生成的csv文件
def writercsv(intxt,outcsv):
  # 使用newlines=''可保证存储的数据不空行。
  csvFile = open(outcsv, 'a',newline='', encoding='utf-8') 
  writer = csv.writer(csvFile)
  csvRow = []
  f = open(intxt,'r',encoding='utf-8')
  for line in f:
      csvRow = line.split() #以空格为分隔符
      if len(csvRow)>1 and len(csvRow)<=3:  #约束条件,视情况而定
         writer.writerow(csvRow)
  f.close()
  csvFile.close()

运行结果

生成一个三列csv文件,第一列是英文名,第二列是中文名,第三列是所在国家

总结

通过本次学习实现了从扫描件中提取文字、把内容按要求写进不同格式的文档的需求。

最初以为提取pdf的库也适用于扫描件,尝试了Pdfplumber库和PyPDF2库。

实践发现Pdfplumber只能识别扫描件pdf中的水印,不适用于扫描件的pdf,而PyPDF2库运行报错:NotImplementedError: only alGorithm code 1 and 2 are supported。

原因是这个被加密的pdf可能是从高版本的acrobot中来的,所以对应的加密算法代号为‘4’,然而,现有的pypdf2模块并只支持加密算法代号为‘1’或者‘2’的pdf加密文件。

以上就是Python实现PDF文字识别提取并写入CSV文件的详细内容,更多关于Python PDF文字识别提取的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python实现PDF文字识别提取并写入CSV文件

本文链接: https://www.lsjlt.com/news/140982.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现PDF文字识别提取并写入CSV文件
    目录1.前言2.需求描述3.开始动手动脑3.1安装相关第三方包3.2导入需要用到的第三方库3.3读取pdf文件,并识别内容3.4对识别的数据进行处理,写入csv文件总结1. 前言 扫...
    99+
    2022-11-13
  • Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享
    一、前言 二、需求描述 三、开始动手动脑 3.1 安装相关第三方包 3.2 导入需要用到的第三方库 3.3 读取pdf文件,并识别内容 3.4 对识别的数据进行处理,写入csv文件 总结 1. 前言扫描件一直受大众青睐,任何纸质资料在扫描...
    99+
    2023-05-17
    Python csv 脚本
  • python 实现将字典写入csv文件
    shutdown={"yunfeiyang":{"username":"yunfeiyang","binding_house":{0:"1",1:"2"},"register_time":"2018-20"}}import csvcsvfi...
    99+
    2023-01-31
    字典 文件 python
  • python中csv文件的写入与读取怎么实现
    这篇文章主要讲解了“python中csv文件的写入与读取怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中csv文件的写入与读取怎么实现”吧!CSV (Comma Sepa...
    99+
    2023-06-29
  • python中csv格式文件如何实现写入与读取
    这篇文章主要为大家展示了“python中csv格式文件如何实现写入与读取”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中csv格式文件如何实现写入与读取”这篇文章吧。csv的简单介绍...
    99+
    2023-06-29
  • 基于Python实现对PDF文件的OCR识别
    最近在做一个项目的时候,需要将PDF文件作为输入,从中输出文本,然后将文本存入数据库中。为此,我找寻了很久的解决方案,最终才确定使用tesseract。所以不要浪费时间了,我们开始吧。 1.安装tesser...
    99+
    2022-06-04
    文件 Python PDF
  • Python实现读取csv文件并进行排序
    目录前言一、案例描述二、代码讲解三、完整代码从本文开始,本系列将介绍python简单案例并进行代码展示,本文的案例是利用pandas库实现读取csv文件并按照列的从小到大进行排序。 ...
    99+
    2023-02-10
    Python读取csv文件 Python读取csv Python csv
  • Python基于百度API识别并提取图片中文字
    利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字。首先需注册获取 API 调用的 ID 和 key,步骤如下: 打开百度AI开放平台,进入控制台中的文字识...
    99+
    2022-11-12
  • Python 识别录音并转为文字的实现
    目录程式功能: 用 UI 界面,点击界面上的“开始识别”来录音(调用百度云语音接口),并自动将结果显示在界面的文本框中 Time: 2022/03/06 Au...
    99+
    2022-11-13
  • Python实现批量识别图片文字并存为Excel
    目录一、背景二、需求三、实战1.安装模块2.识别一张图片3.批量识别图片4.保存数据一、背景 大家好,我是J哥。 也许你还记得,前不久复旦大学一博士生写了130行Python代码,批...
    99+
    2022-11-11
  • Python实现识别文字中的省市区并绘图
    目录1.准备2.基本使用3.高级使用在做NLP(自然语言处理)相关任务时,经常会遇到需要识别并提取省、城市、行政区的需求。虽然我们自己通过关键词表一个个查找也能实现提取目的,但是需要...
    99+
    2022-11-11
  • Python实现将字典内容写入json文件
    目录1、无序字典2、有序字典3、一键多值字典4、写入json4.1 无缩进4.2 有缩进方法补充Python中有序字典和无序字典,一键多值字典。 Python将字典内容写入json文...
    99+
    2022-11-11
  • Python实现自动识别并批量转换文本文件编码
    目录代码用法如题,很简单,就是先用chardet 库识别文件编码,解码之后再输出成目标编码。算是个偶尔能用上的小工具,要用的时候万一没有就很难受的那种,比如,网上下载了别人的项目文件...
    99+
    2023-03-20
    Python转换文本文件编码 Python转换文件编码 Python 转换文本
  • 教你用python提取txt文件中的特定信息并写入Excel
    目录问题描述:工具:操作:源代码:Reference:总结问题描述: 我有一个这样的数据集叫test_result_test.txt,大概几百上千行,两行数据之间隔一个空行。 N...
    99+
    2022-11-12
  • 如何用python提取txt文件中的特定信息并写入Excel
    如何用python提取txt文件中的特定信息并写入Excel,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。问题描述:我有一个这样的数据集叫test_result_test....
    99+
    2023-06-21
  • Python怎么实现识别文字中的省市区并绘图
    这篇文章主要介绍“Python怎么实现识别文字中的省市区并绘图”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么实现识别文字中的省市区并绘图”文章能帮助大家解决问题。1.准备开始之前,你...
    99+
    2023-07-02
  • Python如何实现批量识别图片文字并存为Excel
    今天小编给大家分享一下Python如何实现批量识别图片文字并存为Excel的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、...
    99+
    2023-07-02
  • Python如何实现自动识别并批量转换文本文件编码
    这篇“Python如何实现自动识别并批量转换文本文件编码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何实现自...
    99+
    2023-07-05
  • Python实现光速定位并提取两个文件的不同之处
    目录比较Excel比较Word结束语如果你经常与Excel或Word打交道,那么从两份表格/文档中找到不一样的元素是一件让人很头疼的工作,当然网上有很多方法、第三方软件教你如何对比两...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作