PDF转Images
原创2024年4月26日大约 1 分钟
背景
最近在做图片相关的项目,有个需求要求同时支持PDF和图片,那么很直观的思路的把PDF文档转换为
List<image>来适配统一的处理策略。
所以本教程是介绍如何使用Python语言将List<image>。
环境以及依赖package
NStudyPy==0.0.5NStudyPy 工具包 , 一个有用的工具包,可以简化开发流程,详细介绍可以参考 NStudyPy
由于NStudyPy依赖于pdf2image <=1.17.0,pdf2image又依赖poppler, poppler安装请参考 poppler
本教程使用python 3.10.13作为开发环境 , 原则上适用于python 3.9+
本教程开发环境为windows 10,原则上其他系统应该也可以 , 但请注意需要安装对应环境的 poppler, 同时需注意配置环境变量, 环境变量配置请参阅本站其他文档
!!本站支持全文搜索。
主要流程
- 创建项目,安装依赖
pip install NStudyPy==0.0.5- 调用方法
def test_pdf():
for image in PyPDF.convert_images(r'1.pdf', ImageFormat.PIL):
if isinstance(image, Image):
print(image.format, image.mode)
else:
print(image.shape)说明
pdf_path: pdf文件路径image_format: 图片格式, 默认为ImageFormat.OPENCV, 同时支持返回ImageFormat.PIL格式
- 核心源码
def convert_images(pdf_path: str, image_format: ImageFormat = ImageFormat.OPENCV) -> List[object]:
"""
Convert pdf to images
:param image_format: ImageFormat
:param pdf_path:
:return: List[Image.Image] or List[cv2.typing.MatLike]
"""
images = convert_from_path(pdf_path)
if image_format == ImageFormat.OPENCV:
new_images = []
for image in images:
opencv_image = np.array(image)
if opencv_image.shape[2] == 3:
opencv_image = cv2.cvtColor(opencv_image, cv2.COLOR_RGB2BGR)
new_images.append(opencv_image)
return new_images
return images