如何在python 2.7中逐行从pdf中提取文本



我正在尝试读取和解析一个包含表的PDF文件。。。

这是PDF:中的表格

pdf 表格

这是我的代码:

import PyPDF2
import re
from PyPDF2 import PdfFileReader , PdfFileWriter
FileRead = open("C:\Users\Zahraa Jawad\S40rooms.pdf", 'rb')
pdfReader = PyPDF2.PdfFileReader(FileRead)
pdfwriter = PdfFileWriter()
for page in pdfReader.pages:
    print page.extractText()

我想要的是分别读取表中的每一行(拆分),并将行中的所有信息(年份、学期、房间、日期、课程编号、讲师、起始时间、结束时间、学生人数)保存在一个数组中。在每个'\n'之后,我想将数据保存在数组中的新索引中。

但是,我的代码不起作用;它读取所有信息并将其作为段落返回!我不知道如何分割每一行。

例如(参见上面的PDF):

341 458 01 Gazwa Sleebekh UTH 09:00 09:50 30

输出:年份、学期、房间、日期、课程编号、讲师、起始时间、结束时间、学生人数

2015/2016,第二,S40-021,U,341,Ghazwa Sleebekh,09:00,09:50,2015/2016;第二,S4 0-021,T,341,加兹瓦·斯利贝赫,09:00、09:50、2015/2016

它由UTH(Day)分割,但我的问题是如何读取PDF中的每一行,并使用正则表达式在其中搜索:)

在将PDF转换为文本时,我使用poppler实用程序中的pdftotext获得了最好的结果。(您可以在几个地方找到ms-windows二进制文件[1],[2]。)

import subprocess
def pdftotext(pdf, page=None):
    """Retrieve all text from a PDF file.
    Arguments:
        pdf Path of the file to read.
        page: Number of the page to read. If None, read all the pages.
    Returns:
        A list of lines of text.
    """
    if page is None:
        args = ['pdftotext', '-layout', '-q', pdf, '-']
    else:
        args = ['pdftotext', '-f', str(page), '-l', str(page), '-layout',
                '-q', pdf, '-']
    try:
        txt = subprocess.check_output(args, universal_newlines=True)
        lines = txt.splitlines()
    except subprocess.CalledProcessError:
        lines = []
    return lines

请注意,只有当PDF文件实际包含文本时,文本提取才有效!有些PDF文件只包含文本的扫描图像,在这种情况下,您需要OCR解决方案。

最新更新