我有一些大大小小的PDF,我正试图用python Tika以字符串格式解析它们。我在本地安装了Tika服务器,转换的文件大小约为200mb,但现在我有了1.3gb的pdf。所以当我尝试转换它时parser.from_file(large.pdf)
返回None
。根据我的猜测,这似乎是大文件的内存问题
所以我的基本问题是为什么大型pdf返回None
以及如何克服它
部分代码片段:
import os
import sys
import glob
from tika import tika, parser
from helpers.helper import file_paths
# Set the required path(s)
paths = file_paths()
pdf_path = paths.get('PDF_FILE_PATH')
text_path = paths.get('TEXT_FILE_PATH')
abs_path = os.path.dirname(os.path.join(os.getcwd(), __file__)) + "/server"
# Update the required variables
tika.log_path = os.getenv('TIKA_LOG_PATH', abs_path)
tika.TikaJarPath = os.getenv('TIKA_PATH', abs_path)
tika.TikaFilesPath = abs_path + "/logs"
def get_pdf_string(filename):
"""
Write string to file
"""
raw = parser.from_file(pdf_path + filename)
new_file = filename.split('.')[0] + '.txt'
with open(text_path + new_file, 'w') as write_encode:
write_encode.write(raw['content'])
我也观察到这样的消息只用于大型pdf转换。这是什么意思
终端日志:运行python文件时
[MainThread ] [WARNI] Tika server returned status: 500
服务器日志:
WARN /rmeta/text java.lang.OutOfMemoryError: Java heap space
您可以尝试使用例如pdfbox将PDF拆分为页面,然后逐页发送到tika
相关问题 更多 >
编程相关推荐