You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android运行pdf2image脚本提示poppler未在PATH中如何解决

问题根因

pdf2image 是上层Python封装库,底层完全依赖poppler工具链的pdfinfo、pdftocairo二进制程序完成PDF解析、渲染操作。Ubuntu环境已经预安装了poppler所以脚本可以正常运行,安卓系统没有内置该工具链,所以会触发找不到依赖的报错。


方案1:Chaquopy自研APP场景解决方案

步骤1:集成poppler安卓二进制文件

先获取对应安卓架构(arm64-v8a、armeabi-v7a等)的poppler预编译二进制文件,提取出pdfinfo、pdftocairo两个可执行文件,放入安卓项目的src/main/jniLibs/<对应架构>/目录,打包时会自动集成到APK中。

注意:部分安卓版本要求jniLibs下的文件必须以lib开头、.so结尾,可将两个可执行文件重命名为libpdfinfo.so、libpdftocairo.so再放入。

步骤2:显式指定poppler路径

修改pdf2Img.py代码,在调用convert_from_bytes时显式传入poppler工具的路径:

from pdf2image import convert_from_bytes
import sys
import os
import shutil
import io
import jpype

def extractImagesFromPdf(fileContents):

    BASE_DIR = 'in_pdfs'
    EXTENSION = '.pdf'
    OUT_DIR = 'images'
    IMG_EXT = '.jpg'
    sep = "/"

    # 获取APP原生库目录,也就是poppler二进制的存放路径
    context = jpype.JClass("com.chaquo.python.android.AndroidPlatform").getApplication()
    poppler_path = context.getApplicationInfo().nativeLibraryDir

    if not os.path.exists(getDirectoryPath(BASE_DIR)):
        os.mkdir(getDirectoryPath(BASE_DIR))

    # 调用时传入poppler路径参数
    pages = convert_from_bytes(fileContents, poppler_path=poppler_path)

    if os.path.exists(getDirectoryPath(OUT_DIR)):
        shutil.rmtree(getDirectoryPath(OUT_DIR))
        os.mkdir(getDirectoryPath(OUT_DIR))

    page_num = 1
    for page in pages:
        page.save(getDirectoryPath(OUT_DIR) + sep + str(page_num) + IMG_EXT, 'JPEG')
        page_num = page_num + 1

def getDirectoryPath(dir):
    base_path = os.path.dirname(__file__)
    return base_path + "/" + dir

步骤3:修复调用大小写问题

Java层调用的函数名是extractImagesFromPDF,但Python侧定义的函数名是extractImagesFromPdf,大小写不一致会触发函数找不到的错误,将两边的函数名修改为一致即可。


方案2:第三方Python运行APP场景解决方案

如果你使用Termux这类支持完整Linux环境的安卓Python运行APP,直接执行命令安装poppler即可正常运行脚本:

pkg install poppler

如果是其他不支持自定义安装系统依赖的封闭Python运行APP,无法适配该需求,建议切换为自研APP使用方案1实现。


内容的提问来源于stack exchange,提问作者Aakankasha Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:27:02