1

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

4

1 回答 1

0

您可以尝试使用例如 pdfbox 将 PDF 拆分为页面,然后逐页发送到 tika

于 2021-01-08T12:18:54.250 回答