使用python的Tika服务器对大文件不返回任何值,但对小PDF文件有效

2024-04-19 02:52:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些大大小小的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


Tags: pathtextfromimportparsergetpdfos