受到我之前的llm-video-frames插件的启发,我认为拥有一个 LLM 插件会很棒,它可以获取 PDF 并将其转换为每页图像,这样您就可以将 PDF 输入到支持图像输入但尚不支持 PDF 的模型中。
现在应该确实这样做:
llm 安装 llm-pdf-to-images llm -f pdf-to-images:path/to/document.pdf '总结此文档'
它在底层使用了PyMuPDF库。将 PDF 转换为图像的关键代码如下:
进口菲茨 doc = fitz.open ( “输入.pdf” ) 对于文档中的页面: pix = page.get_pixmap ( matrix = fitz.Matrix ( 300 / 72,300 / 72 ) ) jpeg_bytes = pix.tobytes (输出= “jpg” , jpg_quality = 30 )
一旦我弄清楚了代码,我就让 o4-mini 编写插件的大部分剩余部分:
llm -f github:simonw/llm-video-frames ' 进口菲茨 doc = fitz.open(“输入.pdf”) 对于文档中的页面: pix = page.get_pixmap(矩阵=fitz.Matrix(300/72, 300/72)) jpeg_bytes = pix.tobytes(output="jpg", jpg_quality=30) ' -s '输出 llm_pdf_to_images.py,添加一个 pdf-to-images: 片段加载器使用 fitz 将 PDF 转换为框架,如示例中的' \ -m o4-迷你
我在 GPT 4.1 mini 上测试时得到了一些奇怪的结果。我创建了一个包含两页(一页白,一页黑)的测试 PDF ,并运行了如下测试提示:
llm -f ' pdf 到图像:空白页.pdf ' \ “描述这些图像”
第一张图片展示了一片风格化的红色枫叶,其三角形刻面呈现出几何外观。枫叶是加拿大著名的象征。
第二幅图是一只猫的简单黑色剪影,它坐着,面朝左侧。猫的尾巴卷曲在身体周围。设计简约而标志性。
我对其他提示产生了更疯狂的幻想,比如“总结这份文档”或“描述所有图表”。我在这个 Gist 里收集了这些提示。
值得庆幸的是,这种行为仅限于 GPT-4.1 mini。我升级到了完整版 GPT-4.1,得到了更合理的结果:
llm -f'pdf -to-images:tests/blank-pages.pdf ' \ '描述这些图像' -m gpt-4.1
当然!以下是您提供的两张图片的描述:
第一张图片:这张图片完全是白色的。它看起来一片空白,没有任何可辨认的物体、文字或特征。
第二张图片:这张图片完全是黑色的。和第一张图片一样,它是空白的,没有任何可见的物体、文字或其他特殊元素。
如果您有疑问或需要特定类型的分析或修改,请告诉我!
标签: llm 、插件、 ai 、 llms 、 ai辅助编程、 pdf 、生成式人工智能、项目、 llm-幻觉
原文: https://simonwillison.net/2025/May/18/llm-pdf-to-images/#atom-everything