我使用PyPDF2库通过它的extractText函数从PDF文件中提取文本,对于大多数PDF来说,它工作得很好!
但是,一些PDF生成的文本如下所示:
\n!#$%&‘()“+,”-.“)/”0$-1“2)+3-$.45\n”!“#$%&’()#‘,$!$#-$-/$0.1+”#+12$\n!“#$”&#“%$’%+,-$(%)($#”$(%)&#%/%0!%\n$0“和$1(0)!$2%3(%0“%0%”和$1(34+5)%36%1(0,$7\n%8%!#$%&‘($)%“\n%0!%#%+,$%+,-$(7%);3%099+!(#“$%6+4#”,$“#9%”和$3($,%36%#(0)和$“052%<%90!”%-93%=%“和$1(0,$%6#5"3(0>#"03*%\n36%+,-$(%-$-$=$%/%#4%):?7%@(0,$%+,-$(!%#)($0*%)‘’78”AB%,$#*!+9"019)7C\n%"/D%E$0"&$(%1(0,$%*3(%53,13!0"$7%\n%:D%9%%%%%%%/FD%:BG\n%HD%:%%%%%%%/?D%HB?\n%%FD%:B:\n%3( )
根据医生们的说法,这是可以预料到的:
这对于一些PDF文件很好,但对于其他文件,这是很好的,这取决于所使用的生成器。
不幸的是,extractText()函数在输出像上面这样的文本时不会引发任何异常。
因此,我的问题是,是否有一种方法以编程方式检测extractText()函数何时返回胡言乱语?
发布于 2017-06-07 16:00:09
基于@DYZ的评论,这里是解决方案。
document_path被假定为打开的PDF文件的路径。剩下的应该是很清楚的。
from PyPDF2 import PdfFileReader
from nltk.corpus import words
words = words.words()
document_file = PdfFileReader(open(document_path, 'rb'))
num_pages = document_file.getNumPages()
for page_num in range(0, num_pages):
page = document_file.getPage(page_num)
page_contents = page.extractText()
if set(page_contents.lower().split()).intersection(words):
# process page_contentshttps://stackoverflow.com/questions/44401342
复制相似问题