如果进程超过给定的时间阈值,则结束 pdf 到 txt 的转换
Ending pdf to txt conversion if process exceeds a given time threshold
我正在尝试使用 pdfminer pdf2txt 包将 .pdf 文档语料库转换为 .txt 文档语料库。该过程适用于大多数文档,但某些 PDF 的转换时间特别长。有些似乎从未真正完成转换,并且过程卡住了。我试图弄清楚如果超过几分钟的处理时间如何停止转换。我可以创建一个计时器功能,但如何让 pdf2txt 跳过一个耗时过长的文档并转到下一个文档?
我在这里包含了我的 for 循环代码,没有任何定时器功能。
import os
import subprocess as sp
import requests
documents = <list of .pdf filenames>
dir = '../data/'
for doc in documents:
txt = dir+doc[0:-3]+'txt'
cmd = "pdf2txt.py "+dir+doc" > "+txt
sp.run([cmd], shell=True)
这些文档中有大量是扫描件,因此不是基于文本的 PDF。 pdf2text 能够处理其中的大部分,但有一些代码会卡在 shell 命令上。
subprocess.check_out
有超时参数。
Documentation
要进一步缩短处理时间,您可以执行异步进程调用,而不是等待处理完每个文件后再处理下一个文件。
(检查问题中的Update2)
我正在尝试使用 pdfminer pdf2txt 包将 .pdf 文档语料库转换为 .txt 文档语料库。该过程适用于大多数文档,但某些 PDF 的转换时间特别长。有些似乎从未真正完成转换,并且过程卡住了。我试图弄清楚如果超过几分钟的处理时间如何停止转换。我可以创建一个计时器功能,但如何让 pdf2txt 跳过一个耗时过长的文档并转到下一个文档?
我在这里包含了我的 for 循环代码,没有任何定时器功能。
import os
import subprocess as sp
import requests
documents = <list of .pdf filenames>
dir = '../data/'
for doc in documents:
txt = dir+doc[0:-3]+'txt'
cmd = "pdf2txt.py "+dir+doc" > "+txt
sp.run([cmd], shell=True)
这些文档中有大量是扫描件,因此不是基于文本的 PDF。 pdf2text 能够处理其中的大部分,但有一些代码会卡在 shell 命令上。
subprocess.check_out
有超时参数。
Documentation
要进一步缩短处理时间,您可以执行异步进程调用,而不是等待处理完每个文件后再处理下一个文件。