我有一些大大小小的 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 服务器返回状态:500
服务器日志:
WARN /rmeta/text java.lang.OutOfMemoryError: Java 堆空间