Я немного опоздал, но проблема действительно связана с тем, что 136 страниц заносятся в память.Вы можете сделать три вещи.
- Указать формат для преобразованных изображений.
По умолчанию pdf2image использует PPM в качестве формата изображения, он быстрее, но также требуетнамного больше памяти (более 30 МБ на изображение!).Что вы можете сделать, чтобы это исправить, так это использовать более удобный для памяти формат, такой как jpeg или png.
convert_from_path('C:\path\to\your\pdf', fmt='jpeg')
Это, вероятно, решит проблему, но это в основном только из-за сжатия, и в какой-то момент (скажем, PDF + 500 страниц) проблема появится снова.
Использовать выходной каталог
Я бы порекомендовал этот каталог, поскольку он позволяет обрабатывать любые PDF-файлы.Пример на странице README объясняет это хорошо:
import tempfile
with tempfile.TemporaryDirectory() as path:
images_from_path = convert_from_path('C:\path\to\your\pdf', output_folder=path)
Это временно записывает образ в память вашего компьютера, поэтому вам не нужно удалять его вручную.Обязательно выполните любую необходимую обработку перед выходом из контекста with
!
Обрабатывать PDF-файл кусками
pdf2image
позволяет определить первую последнюю страницу, которую вы хотите обработать.Это означает, что в вашем случае с PDF на 136 страниц вы можете сделать:
for i in range(0, 136 // 10 + 1):
convert_from_path('C:\path\to\your\pdf', first=i*10, last=(i+1)*10)