使用Pypdf2库时如何用逗号分隔单词

时间:2018-10-02 09:21:17

标签: python data-science text-analysis pypdf2

我正在使用PyPDF2将pdf转换为文本转换,在这段代码中有些单词混在一起,代码如下所示:-

filename = 'CS1.pdf'      
pdfFileObj = open(filename,'rb')       
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)      
num_pages = pdfReader.numPages  
count = 0      
text = ""    

while count < num_pages:       
pageObj = pdfReader.getPage(count)  
    count +=1  
    print(pageObj)  
    text += pageObj.extractText()
if text != "":  
   text = text  
else:  
   text = textract.process('/home/ayush/Ayush/1june/pdf_to_text/CS1.pdf', method='tesseract', language='eng')
print(text)

输出:-

计算机科学与工程专业的研究生课程

我怎么期望

到,追求,研究生,研究,计算机,科学和工程学

1 个答案:

答案 0 :(得分:0)

请尝试添加

text += pageObj.extractText()
print(pageObj.extractText())

文本在连接前的那个阶段如何显示?

我可能已经找到了原因。下载iText RUPS来检查pdf。该工具显示了如何呈现内容并将其放置在页面上。

导航到Stream

enter image description here

在右下角您可以阅读

enter image description here

我不熟悉PDF规范,但是this的回答状态

  

这些数字将相应的文本位置调整该数量。   数字以文本空间单位的千分之一表示。   根据官方PDF规范,此“金额应减去   从当前水平或垂直坐标开始。”一个正数   因此,水平书写时,下一个字符串将向左移动。   负数将其向右移动。

我怀疑PyPDF2不会将数字解释为空格。这可能不是那么容易,因为您必须知道多少个像素等于空格字符。

我快速浏览了另一个pdf文件,并且正确读取了带空格而不是数字的文本。请尝试。

如果这是问题所在,则下一步是直接迭代iText RUPS中所示的元素。这有点麻烦,但可能。您可以找到PyPDF2的示例。