在 Windows 7 上使用 Python 2.7 从 PDF 文件中提取文本
Extracting text from a PDF file using Python 2.7 on Windows 7
我一直在使用 PyPDF2 提取由 LibreOffice 4.3 生成的 this PDF file (generated with pdfTeX-1.40.0) using Python 2.7. It works fine but now i have to extract text from same pdf 中包含的文本,结果是这样的(不完整):
˜ ! ˜"!#$ %
˘ˇˆ˙˝
ˇ
˝%&˘
%'%
˛˚˛˜ !
"#$#"%$&
'##()˛˚˛
˛˚˛˜ !"#$#"%$%
*+!
这是我的代码:
pdfFileObj = open(filePath, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageText = ""
for pageID in range(0, pdfReader.numPages):
pageObj = pdfReader.getPage(pageID)
pageText = pageText + "\n" + str(pageObj.extractText().encode('utf-8')))
for line in pageText:
extInfo = extInfo + line
pdfFileObj.close()
if string2search.replace(' ','') in extInfo:
stringPresent = True
else:
stringPresent = False
windows 机器有任何简单的工作解决方案吗?
我找到了 this 个关于此的主题,但没有解决方案。
我也尝试使用 this 主题中的 PDFMiner,但出现此错误:
UnicodeEncodeError: 'ascii' codec cant encode character u'\xe9' in position 0: ordinal not in range (128)
我相信你的问题是读取前的编码
pdfFileObj = open(filePath, 'rb',encoding="utf-8")
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageText = ""
for pageID in range(0, pdfReader.numPages):
pageObj = pdfReader.getPage(pageID)
pageText = pageText + "\n" + str(pageObj.extractText().encode('utf-8')))
for line in pageText:
extInfo = extInfo + line
pdfFileObj.close()
if string2search.replace(' ','') in extInfo:
stringPresent = True
else:
stringPresent = False
我终于找到了解决办法。
1.- 下载 windows
的 Xpdf 工具
2.- 从 xpdf-tools-win-4.00\bin32 复制 pdftotext.exe 到 C:\Windows\System32 和 C:\Windows\SysWOW64
3.- 使用代码:
import subprocess
try:
extInfo = subprocess.check_output('pdftotext.exe '+filePath + ' -',shell=True,stderr=subprocess.STDOUT).strip()
except Exception as e:
print (e)
if string2search in extInfo:
stringPresent = True
else:
stringPresent = False
我一直在使用 PyPDF2 提取由 LibreOffice 4.3 生成的 this PDF file (generated with pdfTeX-1.40.0) using Python 2.7. It works fine but now i have to extract text from same pdf 中包含的文本,结果是这样的(不完整):
˜ ! ˜"!#$ %
˘ˇˆ˙˝
ˇ
˝%&˘
%'%
˛˚˛˜ !
"#$#"%$&
'##()˛˚˛
˛˚˛˜ !"#$#"%$%
*+!
这是我的代码:
pdfFileObj = open(filePath, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageText = ""
for pageID in range(0, pdfReader.numPages):
pageObj = pdfReader.getPage(pageID)
pageText = pageText + "\n" + str(pageObj.extractText().encode('utf-8')))
for line in pageText:
extInfo = extInfo + line
pdfFileObj.close()
if string2search.replace(' ','') in extInfo:
stringPresent = True
else:
stringPresent = False
windows 机器有任何简单的工作解决方案吗? 我找到了 this 个关于此的主题,但没有解决方案。 我也尝试使用 this 主题中的 PDFMiner,但出现此错误:
UnicodeEncodeError: 'ascii' codec cant encode character u'\xe9' in position 0: ordinal not in range (128)
我相信你的问题是读取前的编码
pdfFileObj = open(filePath, 'rb',encoding="utf-8")
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageText = ""
for pageID in range(0, pdfReader.numPages):
pageObj = pdfReader.getPage(pageID)
pageText = pageText + "\n" + str(pageObj.extractText().encode('utf-8')))
for line in pageText:
extInfo = extInfo + line
pdfFileObj.close()
if string2search.replace(' ','') in extInfo:
stringPresent = True
else:
stringPresent = False
我终于找到了解决办法。
1.- 下载 windows
的 Xpdf 工具2.- 从 xpdf-tools-win-4.00\bin32 复制 pdftotext.exe 到 C:\Windows\System32 和 C:\Windows\SysWOW64
3.- 使用代码:
import subprocess
try:
extInfo = subprocess.check_output('pdftotext.exe '+filePath + ' -',shell=True,stderr=subprocess.STDOUT).strip()
except Exception as e:
print (e)
if string2search in extInfo:
stringPresent = True
else:
stringPresent = False