PDF转Images

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: PDF转Images

背景

最近在做图片相关的项目,有个需求要求同时支持PDF和图片,那么很直观的思路的把PDF文档转换为 List<image> 来适配统一的处理策略。
所以本教程是介绍如何使用 Python 语言将 PDF 文档转换为 List<image>

环境以及依赖package

NStudyPy==0.0.5 NStudyPy 工具包 , 一个有用的工具包,可以简化开发流程,详细介绍可以参考 NStudyPy
由于NStudyPy依赖于pdf2image <=1.17.0pdf2image又依赖 poppler, poppler安装请参考 poppler
本教程使用 python 3.10.13 作为开发环境 , 原则上适用于 python 3.9+
本教程开发环境为 windows 10 ,原则上其他系统应该也可以 , 但请注意需要安装对应环境的 poppler, 同时需注意配置 环境变量, 环境变量配置请参阅本站其他文档

!!本站支持全文搜索。

主要流程

  1. 创建项目,安装依赖
pip install NStudyPy==0.0.5
  1. 调用方法
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格式
  1. 核心源码
    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
    
目录
相关文章
|
3月前
|
安全 Cloud Native 数据中心
Windows Server 2016 中文版、英文版下载 (2025 年 7 月更新)
Windows Server 2016 中文版、英文版下载 (2025 年 7 月更新)
424 1
Windows Server 2016 中文版、英文版下载 (2025 年 7 月更新)
|
6月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
885 1
|
SQL 运维 监控
MSSQL性能调优实战:索引优化、SQL查询效率提升与并发控制策略
在Microsoft SQL Server(MSSQL)的日常运维与性能优化中,精准的策略与技巧是实现高效数据库管理的关键
|
算法 定位技术
最优化方法(最速下降、牛顿法、高斯牛顿法、LM算法)
最优化方法(最速下降、牛顿法、高斯牛顿法、LM算法)
1091 0
最优化方法(最速下降、牛顿法、高斯牛顿法、LM算法)
|
存储 SQL 数据管理
阿里云数据库 SelectDB 内核 Apache Doris 如何基于自增列满足高效字典编码等典型场景需求|Deep Dive 系列
自增列的实现,使得 Apache Doris 可以在处理大规模时展示出更高的稳定性和可靠性。通过自增列,用户能够高效进行字典编码,显著提升了字符串精确去重以及查询的性能。使用自增列作为主键来存储明细数据,可以完美的解决明细数据更新的问题。同时,基于自增列,用户可以实现高效的分页机制,轻松应对深分页场景,有效过滤掉大量非必需数据,从而减轻数据库的负载压力,为用户带来了更加流畅和高效的数据处理体验。
629 0
|
JSON Kubernetes 数据格式
Grafana 系列文章(十三):如何用 Loki 收集查看 Kubernetes Events
Grafana 系列文章(十三):如何用 Loki 收集查看 Kubernetes Events
|
Linux 网络安全 开发工具
Linux取消秘钥登录,改为用户名密码登录
记录下刚刚取消秘钥登录,改为用户名密码登录。 一般在阿里云购买服务器后,可能未点自定义密码登录,使用了秘钥。又不想重置系统盘 下面操作可以参考下 一、修改 vim /etc/ssh/sshd_config 去掉PermitRootLogin yes 前面的#注释 二、 修改 PasswordAut...
7879 1
|
人工智能 PyTorch 算法框架/工具
GitHub 7.5k star量,各种视觉Transformer的PyTorch实现合集整理好了
GitHub 7.5k star量,各种视觉Transformer的PyTorch实现合集整理好了
552 0
|
Unix Shell 开发工具
环境搭建 | MuMu模拟器 - Window10/11 系列
环境搭建 | MuMu模拟器 - Window10/11 系列
|
设计模式 前端开发 JavaScript
通用后端开发说明及开发规范
通用后端开发说明及开发规范
1006 0