精华内容
下载资源
问答
  • PDF是人们日常使用最多的跨平台文档。其是一种用独立于应用程序、硬件、操作系统的方式呈现文档的文件格式。...今天,我们使得Python来抽取PDF文档中的文本与图片。文本抽取PDF文本抽取相对容易,效果最...
    67fe1fa347574959b45b44407507673e

    PDF是人们日常使用最多的跨平台文档。其是一种用独立于应用程序、硬件、操作系统的方式呈现文档的文件格式。每个PDF文件包含固定布局的平面文档的完整描述,包括文本、字形、图形及其他需要显示的信息。因此,具有良好的跨平台特性,但同时,也为抽取其内容带来了不便。

    PDF最初版本于1993发行,最新版本为2.0。

    今天,我们使得Python来抽取PDF文档中的文本与图片。

    文本抽取

    PDF文本抽取相对容易,效果最好的是pdfminer(https://github.com/euske/pdfminer)。基本能抽取出所有文本。

    pdfminer是开源的纯Python编写,支持最新至PDF 1.7版本。

    pdfminer的使用比较简单

    安装:

    pip install pdfminer

    使用:

    python pdf2txt.py -o  -t text -O 

    如上就实现了文本抽取,抽取的是纯文本,无格式、字体等信息。

    f611dde62dc547a9918a6a5e323e8588

    原文

    9f4ebab2a2ea455ea8634eb09de96643

    抽取出的文本

    pdfminer有个麻烦的地方,对于CJK编码的PDF文档,需要手动安装也能正常抽取文字。

    图片抽取

    PDF图片抽取是个比较难的问题,目前Python可以调用的比较好的库是PyMuPDF(https://github.com/pymupdf/PyMuPDF)。PyPDF2(https://github.com/mstamy2/PyPDF2)库也可以实现部分功能,但已于2018年停止更新。

    这些库的问题是,无法抽取出所有的图片,同时,抽取出的图片问题不一。

    这里以 https://arxiv.org/pdf/1703.10135.pdf 文件为例。

    使用PyMuPDF 代码如下:

    import fitz  # PyMuPDFdef get_pixmaps_in_pdf(pdf_filename):    doc = fitz.open(pdf_filename)    xrefs = set()    for page_index in range(doc.pageCount):        for image in doc.getPageImageList(page_index):            xrefs.add(image[0])  # Add XREFs to set so duplicates are ignored    pixmaps = [fitz.Pixmap(doc, xref) for xref in xrefs]    doc.close()    return pixmapsdef write_pixmaps_to_pngs(pixmaps):    for i, pixmap in enumerate(pixmaps):        pixmap.writePNG(f'{i}.png')  # Might want to come up with a better namepixmaps = get_pixmaps_in_pdf('Wang_et_al_2017_Tacotron.pdf')write_pixmaps_to_pngs(pixmaps)

    抽取效果如下。整篇PDF文档,只抽取出如下的几个图片。

    c2e8b53af79645af825be5d9ab032d12

    比如,第二页的图片就无法抽取出来。

    25a2f59608a54dec80392289a13a6cbe

    理想状态下,第6页的图片与示例应该合并一成一张图抽取出来,但实际上是分开抽取。

    487b4f09125d4e778b4610a0b4ac593e

    好的。Python抽取PDF文字与图片的介绍就到这里。

    大家有更好的图片抽取工具或方法,欢迎留言贡献,谢谢

    展开全文
  • PDF 图片 python3

    2019-01-23 17:24:46
    以原pdf名为文件夹名来存放该pdf转换后的图片 参数:pdf为存放原pdf的文件目录(绝对路径) img为存放所有转换好的图片文件夹的文件夹 """ def __init_...
    from pdf2image import convert_from_path                                                                                                                                                                 
    import tempfile
    import multiprocessing
    import os
    
    
    class PdfToImage():
    	"""
    	将pdf转换为图片
    	以原pdf名为文件夹名来存放该pdf转换后的图片
    	参数:pdf为存放原pdf的文件目录(绝对路径)
    	     img为存放所有转换好的图片文件夹的文件夹
    	"""
    
    
        def __init__(self, pdf, img):
        	"""
        	初始化pdf文件路径和存放图片路径
        	"""
            self.pdf = pdf
            self.img = img
    
    
        def convers(self, fileName, outputDir):
        	"""
        	pdf转图片核心,自行学习pdf2image库
        	"""
            with tempfile.TemporaryDirectory() as path:
                images = convert_from_path(fileName, dpi=100, output_folder=outputDir, fmt='jpeg')
                # pdf转换完成后,将该pdf文件删除
                os.unlink(self.fileName)
    
    
        def main(self):
        	"""主调度流程"""
    
        	# 创建进程池
            pool = multiprocessing.Pool(processes = 4)
    
            # 循环读取pdf文件夹内pdf文件
            for fileName in os.listdir(self.pdf):
                # 获取文件名
                dirName = fileName[:-4]
                # 将文件名拼接到要保存图片目录路径下
                dirPath = os.path.join(self.img,dirName)
                # 判断该文件目录是否已经存在,如果存在,将其删除
                if os.path.exists(dirPath):
                    os.removedirs(dirPath)
                # 在存放图片目录路径下新建以pdf名为名的文件夹,用来存放对应pdf转换得到的图片
                os.mkdir(dirPath)
                # 指定pdf转换后输出文件夹目录路径
                outputDir = dirPath
               	# 要转换的pdf文件路径
               	fileName = self.pdf + '/' + fileName
                # 调用进程池进行转换
                pool.apply_async(self.convers, args=(fileName, outputDir))
            # 关闭进程池,回收进程
            pool.close()
            pool.join()
    
    
    
    
    # 存放pdf文件的目录(绝对路径)
    # pdf = "/home/ubantu/Desktop/PDF"
    # 要存放转换好的图片目录(绝对路径)
    # img = "/home/ubantu/Desktop/IMAGES"
    
    # pdftoimg = PdfToImage(pdf, img)
    # pdftoimg.main()
    
    展开全文
  • Python进行PDF转图片pdfplumber的可视化调试使用pdfplumber这个Python工具库,pdfplumber基于pdfminer.six。使用pdfplumber进行PDF转图片,简单快捷。同时pdfplumber还提供可视化的PDF内容提取调试支持,如上图。...

    Python进行PDF转图片

    adbd1f14c08140b9bed7492c8c69738e

    pdfplumber的可视化调试

    使用pdfplumber这个Python工具库,pdfplumber基于pdfminer.six。

    使用pdfplumber进行PDF转图片,简单快捷。同时pdfplumber还提供可视化的PDF内容提取调试支持,如上图。

    import pdfplumberpdf = pdfplumber.open("ccf-2019.pdf")for i, page in enumerate(pdf.pages):    page.to_image(resolution=150).save('{}.png'.format(i))

    Linux上进行PDF转图片

    Linux上使用pdftoppm命令行工具可以方便进行PDF转图片,pdftoppm属于poppler-utils包。

    安装:

    sudo apt install poppler-utils

    使用:

    pdftoppm -png demo.pdf 

    pdftoppm提供许多配置选项,比如crop剪切图片、缩放、分辨率、打印页数等等。

    Usage: pdftoppm [options] [PDF-file [PPM-file-prefix]]  -f                  : first page to print  -l                  : last page to print  -o                       : print only odd pages  -e                       : print only even pages  -singlefile              : write only the first page and do not add digits  -r                   : resolution, in DPI (default is 150)  -rx                  : X resolution, in DPI (default is 150)  -ry                  : Y resolution, in DPI (default is 150)  -scale-to           : scales each page to fit within scale-to*scale-to pixel box  -scale-to-x         : scales each page horizontally to fit in scale-to-x pixels  -scale-to-y         : scales each page vertically to fit in scale-to-y pixels  -x                  : x-coordinate of the crop area top left corner  -y                  : y-coordinate of the crop area top left corner  -W                  : width of crop area in pixels (default is 0)  -H                  : height of crop area in pixels (default is 0)  -sz                 : size of crop square in pixels (sets W and H)  -cropbox                 : use the crop box rather than media box  -mono                    : generate a monochrome PBM file  -gray                    : generate a grayscale PGM file  -png                     : generate a PNG file  -jpeg                    : generate a JPEG file  -jpegopt         : jpeg options, with format =[,=]*  -tiff                    : generate a TIFF file  -tiffcompression : set TIFF compression: none, packbits, jpeg, lzw, deflate  -freetype        : enable FreeType font rasterizer: yes, no  -thinlinemode    : set thin line mode: none, solid, shape. Default: none  -aa              : enable font anti-aliasing: yes, no  -aaVector        : enable vector anti-aliasing: yes, no  -opw             : owner password (for encrypted files)  -upw             : user password (for encrypted files)  -q                       : don't print any messages or errors
    展开全文
  • 本篇文章记录如何使用pythonpdf文件切分成一张一张图片,包括环境配置、版本兼容问题。环境配置(mac)安装ImageMagickbrew install imagemagick这里有个坑,brew安装都是7.x版本,使用wand时会出错,需要你安装6.x...

    本篇文章记录如何使用python将pdf文件切分成一张一张图片,包括环境配置、版本兼容问题。

    环境配置(mac)

    安装ImageMagick

    brew install imagemagick

    这里有个坑,brew安装都是7.x版本,使用wand时会出错,需要你安装6.x版本。

    解决办法:

    1.安装6.x版本

    brew install imagemagick@6

    2.取消链接7.x版本

    brew unlink imagemagick

    Unlinking /usr/local/Cellar/imagemagick/7.0.7-4... 71 symlinks removed

    3.强制链接6.x版本

    brew link imagemagick@6 --force

    Linking /usr/local/Cellar/imagemagick@6/6.9.9-15... 75 symlinks created

    4.export环境变量

    echo 'export PATH="/usr/local/opt/imagemagick@6/bin:$PATH"' >> ~/.bash_profile

    ok,以上解决imagemagick版本问题。

    安装gs

    必须安装gs,否则pdf无法转换。

    brew install gs

    安装wand

    pip3 install wand

    我这里使用的是python3,所以需要用pip3.

    代码实现

    from wand.image import Image

    def convert_pdf_to_jpg(filename):

    with Image(filename=filename) as img :

    print('pages = ', len(img.sequence))

    with img.convert('jpeg') as converted:

    converted.save(filename='image/page.jpeg')

    效果

    笔者将一本书四百多页都转出来了,大家也可以去试下啦。

    这里写图片描述

    展开全文
  • 本篇文章记录如何使用pythonpdf文件切分成一张一张图片,包括环境配置、版本兼容问题。环境配置(mac)安装ImageMagickbrew install imagemagick这里有个坑,brew安装都是7.x版本,使用wand时会出错,需要你安装6.x...
  • 前言:在最近的测试中遇到一个与PDF相关的测试需求,其中...下面首先分享一下PythonPDF转换成图片,Java后续有时间在进行分享。需求:我需要先将PDF转换成为PNG图片,并截取图片的一部分存储,然后作为测试目标进...
  • 可能会有人问,很多PDF阅读软件都是可以直接将PDF文件保存成图片格式的,为什么非得用Python??使用Python(代码)的优势就在于可以批量操作,试想,如果你有成百上千的PDF文件,你很有可能要一个一个的打开,然后用...
  • import osimport sysfrom reportlab.lib.pagesizes import A4, landscapefrom reportlab.pdfgen import canvas'''遍历当前目录下所有的jpg文件,并按照文件夹名称合并成pdf文档python 3.4.4图片文件用数字按顺序命名'...
  • python PDF 图片

    2020-04-26 18:05:35
    python PDF 图片 代码 import fitz import time import re import os def pdf2image(pdf_path):       '''     # 从pdf中提取图片     :param path: ...
  • Python3 PDF转图片

    千次阅读 2019-10-28 16:23:11
    最近要把PDF转换为png图片,用到了Pythonpdf2image模块。 pdf2image是对pdftoppm和pdftocairo的封装,可以转换PDF到PIL图片对象。 安装 pip install pdf2image windows下还需要下载poppler,并且把bin/目录加到...
  • Python PDF转图片

    千次阅读 2019-10-10 17:32:21
    Python PDF转图片安装PyMuPDF运行代码 安装PyMuPDF pip install PyMuPDF 如果要能力就可以使用别的库,但是我试了几个库感觉还是这个库简单,也不需要修改系统环境变量。 运行代码 import fitz rotate = int(0) ...
  • 1 importpdfkit2 importrequests3 from bs4 importBeautifulSoup4 from PIL importImage5 from pdf2image importconvert_from_path678 defmain():9 header={10 "Accept": "text/html,application/xhtml+xml,...
  • 根据公司项目要求,需要实现将数据输入一个现有的pdf格式的表格中的功能,鉴于没有直接操作pdf的库,因此,需要先将pdf转图片,再利用report-lab将图片置于背景,再加入文字,最后生成pdf。PythonMagick代码如下:...
  • 本篇文章记录如何使用pythonpdf文件切分成一张一张图片,包括环境配置、版本兼容问题。环境配置(mac)安装ImageMagickbrew install imagemagick这里有个坑,brew安装都是7.x版本,使用wand时会出错,需要你安装6.x...
  • 新建pdfconverter.py 文件,并将以下代码复制粘贴:# -*- coding: utf-8 -*-import iofrom wand.image import Imagefrom wand.color import Colorfrom PyPDF2 import PdfFileReader, PdfFileWritermemo = {}def ...
  • 【PyMuPDF和pdf2image】PythonPDF转图片

    万次阅读 多人点赞 2019-08-03 16:19:46
    前言:在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将...下面首先分享一下Python将PDF转换成图片,Java+PDFBox将PDF转图片 需求:我需要先将PDF转换成为PNG图片,并截取图片的一部分存储,然后...
  • pdf文件成文本 pdf文件按页图片 windows 这是个很小众的东西,网上很多都不能用,很折腾人。
  • 废话不多说,直接贴代码1 pdf转影像的代码:2 影像合成pdf代码:3 选择pdf转图片还是图片合成pdf代码:4 主函数:使用说明:python文件和需要转换的pdf文件或者要生成pdf文件的图片文件夹放在同一目录下完整代码:...
  • 本文实例讲述了Python3将jpg转为pdf文件的方法。分享给大家供大家参考,具体如下:#coding=utf-8#!/usr/bin/env python"""convert image to pdf file"""#Author: mrbeannimport osimport sysimport globimport ...
  • 上一篇文章中已经介绍了简单的python爬网页下载文档,但下载后的文档多为doc或pdf,对于数据处理仍然有很多限制,所以将doc/pdf转换成txt显得尤为重要。查找了很多资料,在linux下要将doc转换成txt确实有难度,所以...
  • 图片转pdf需要先把图片(.jpg or png)放到 image这个文件夹里然后使用from PIL import Imageimport osdef rea(path, pdf_name):## change all png into jpg & delete the .png filesnames=os.listdir(path)...
  • 首先是库的导入: import os import sys import fitz from reportlab.lib.pagesizes import portrait from reportlab.pdfgen import canvas from PIL import Image 先进行 PDF 转图片的操作,使用 fitz 打开后缩放...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 626
精华内容 250
关键字:

pdf转图片python

python 订阅