如何在Python2.7中逐行从pdf中提取文本

如何在Python2.7中逐行从pdf中提取文本,python,Python,我正在尝试读取和解析包含表的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

我正在尝试读取和解析包含表的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):

341458 01加兹瓦-斯里贝赫乌斯09:00 09:50 30

输出:年、学期、房间、日、课程号、讲师、时间从、时间到、学生人数

2015/2016,第二,S40-021,U,341,Ghazwa Sleebekh,09:00,09:50,30 2015/2016,第二,S40-021,T,341,Ghazwa Sleebekh,09:00,09:50,30 2015/2016,第二,S40-021,H,341,Ghazwa Sleebekh,09:00,09:50,30


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

在将PDF转换为文本时,我使用实用程序中的
pdftotext
获得了最佳结果。(您可以在多个位置找到ms windows二进制文件,)


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

在将PDF转换为文本时,我使用实用程序中的
pdftotext
获得了最佳效果。(您可以在多个位置找到ms windows二进制文件,)


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

您能给我们一个输出示例吗?如果是长文本,只需查看
page.extractText()
的相关部分。您可能会感兴趣。此外,您可以使用
str.split
分割字符串,或使用
re
模块进行模式匹配,或使用
csv
进行表格数据或更复杂的结构化数据。好的,我将发布一个示例。您能给我们一个输出示例吗?如果是长文本,只需查看
page.extractText()
的相关部分。您可能会感兴趣。此外,您可以使用
str.split
分割字符串,或使用
re
模块进行模式匹配,或使用
csv
进行表格数据或更复杂的结构化数据。好的,我将发布一个示例
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