避免从PDF中提取重复图像

时间:2019-04-03 16:49:29

标签: python image pdf ocr extract

我正在尝试在python中的扫描图像pdf上使用光学字符识别。这需要提取文本中的图像,这就是我遇到的问题。我从中提取的某些PDF在每页上都有一个〜header图片,每页提取一次。有办法避免这种情况吗?我主要是在尝试减少必须送入OCR算法的图像数量。

目前,我可以使用以下两种方法进行图像提取,尽管我可以使用其他方法(尽管我在尝试安装textract时遇到了数小时的困难,但到目前为止还没有得到解决,所以也许不是那个包裹。

方法1:通过os命令行通过Poppler的pdfimages工具

def image_exporter(pdf_path, output_dir):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    cmd = ['pdfimages', '-png', '-p', pdf_path,
           '{}/prefix'.format(output_dir)]
    subprocess.call(cmd)
    print('Images extracted')

方法2:Fitz / PyMuPDF

def img_extract(pdf_path, output_dir):
    name_start = pdf_path.split('\\')[-1][:15]
    doc = fitz.open(pdf_path)
    for i in range(len(doc)):
        for img in doc.getPageImageList(i):
            xref = img[0]
            pix = fitz.Pixmap(doc, xref)
            name = "p%s-%s.png" % (i, xref)
            name = name_start + ' ' + name
            name = output_dir + '\\' + name
            if pix.n < 5:       # this is GRAY or RGB
                #pix.writePNG(name)
                pix.writeImage(name)
            else:               # CMYK: convert to RGB first
                pix1 = fitz.Pixmap(fitz.csRGB, pix)
                #pix1.writePNG(name)
                pix1.writeImage(name)
                pix1 = None
            pix = None

这两个代码本质上都是我在其他地方找到的代码的副本(Extract images from PDF without resampling, in python?是其中之一)。

我还应该提到,我对pdf文档本身的结构了解甚少。因此,我发生了其他奇怪的事情(提取反色图像,超级模糊图像,pg_x的image1,其中缺少随机字母的文本和相同pg_x的image2具有随机丢失的字母,但image1中没有字母等) 。因此,也许同样有效的问题是,是否有一种方法可以将一页上的所有图像组合成一个我可以使用OCR代码扫描的图像?我主要是在尝试避免扫描大量图像。

0 个答案:

没有答案