Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python正确解析PDF段落_Python_Parsing_Pdf - Fatal编程技术网

使用Python正确解析PDF段落

使用Python正确解析PDF段落,python,parsing,pdf,Python,Parsing,Pdf,我正在创建一个Python脚本,它应该从系统中加载一组PDF文件,进行一些数据分析并输出结果。数据分析的本质是,我必须逐段解析PDF,对于每个段落,我必须迭代每个短语,检查是否满足某些条件 我目前正在使用Tika进行解析。这就是我评价段落的方式 这就是我目前正在做的,我正在加载内容,然后,用一个唯一的字符串替换出现的一个或多个换行符。用空格替换每个常规换行符,用双换行符替换唯一字符串。我这样做是为了更清楚哪一条新行划出一段。然后我继续提取段落并返回没有重复的段落列表(Tika有时会重复内容) d

我正在创建一个Python脚本,它应该从系统中加载一组PDF文件,进行一些数据分析并输出结果。数据分析的本质是,我必须逐段解析PDF,对于每个段落,我必须迭代每个短语,检查是否满足某些条件

我目前正在使用Tika进行解析。这就是我评价段落的方式

这就是我目前正在做的,我正在加载内容,然后,用一个唯一的字符串替换出现的一个或多个换行符。用空格替换每个常规换行符,用双换行符替换唯一字符串。我这样做是为了更清楚哪一条新行划出一段。然后我继续提取段落并返回没有重复的段落列表(Tika有时会重复内容)

def getpdfcontent(路径):
pdf\u content=extract\u pdf(路径)
text=re.sub(r“\n{2,}”,pdf_content['content'])
text=text。替换(“\n”和“”)
text=text.replace(“,”\n\n”)
段落=提取段落(text.splitlines())
返回移除的副本(段落)
这就是我提取段落的方式。我检查当前行是否为空,当前段落是否有内容,并将其附加到列表中

def提取段落(行):
current=“”
段落=[]
对于行中的行:
如果不是line.strip():
如果当前为.strip():
段落.附加(当前)
current=“”
持续
当前+=行。带()
返回段落
我想补充一句,这就是我得到法尔赛的原因!?我也要分手了

def getphrases(文档):
短语=[]
phr=文件拆分(“.”)
短语扩展(phr)
返回短语
现在我的首要任务是知道我是否可以改进解析?
如果没有,我可以做些优化吗?

除非PDF被标记,否则它们中没有段落的概念。充其量你有线条的概念。因此,您对按段落解析PDF的要求通常只能通过使用启发式来实现,因此,不确定,只能以一定的概率实现。嗨!谢谢你的回答:)!这方面的启发法相当复杂。但是,如果您能够处理Java,则可以使用一些库来解构页面内容,并很好地从未标记(或标记)的PDF中按照正确的阅读顺序推断段落、句子和单词。