📜  Python|使用 OCR(光学字符识别)读取 PDF 的内容(1)

📅  最后修改于: 2023-12-03 14:46:25.848000             🧑  作者: Mango

Python | 使用 OCR(光学字符识别)读取 PDF 的内容

在很多情况下,我们需要将 PDF 文档中的文字内容提取出来进行处理,此时 OCR(光学字符识别) 就是一种很好的方式。本文将介绍如何使用 Python 中的 PyPDF2 和 pytesseract 库,对 PDF 文档进行 OCR 处理。

PyPDF2 简介

PyPDF2 是一个用于处理 PDF 文件的 Python 库。它可以用于合并、分割、裁剪、缩放和旋转 PDF,以及提取 PDF 中的文本和元数据(如标题、主题、作者和关键字)。

pytesseract 简介

pytesseract 是一个 Python 的 OCR 库,它可以识别各种格式的图像中的文本,并将其转换为机器可读的文本形式。

准备工作和安装

在进行 OCR 处理之前,我们需要做一些准备工作。首先需要安装 PyPDF2 和 pytesseract 库。可以使用以下命令进行安装:

pip install PyPDF2
pip install pytesseract

此外,我们还需要安装 Tesseract。它是 Google 开发的一个 OCR 引擎,可以识别各种语言的文本。

读取 PDF 中的文本

下面是读取 PDF 中的文本的代码片段:

import PyPDF2

pdf_file = open('example.pdf', 'rb')

pdf_reader = PyPDF2.PdfFileReader(pdf_file)
page_count = pdf_reader.getNumPages()

for i in range(page_count):

    page = pdf_reader.getPage(i)

    text = page.extractText()

    print(text)

在上面的代码片段中,我们首先打开一个 PDF 文件,并使用 PyPDF2 提供的 PdfFileReader 类来读取其中的文本。我们可以使用 getNumPages() 方法获取 PDF 中页面总数,接下来需要使用 getPage() 方法获取页面。在获取页面后,我们使用 extractText() 方法提取文本并进行处理。最后,我们使用 print() 函数打印出文本内容。

OCR 处理 PDF 文件

下面是如何对 PDF 文件进行 OCR 处理的代码片段:

import PyPDF2
import pytesseract
from PIL import Image

pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
page_count = pdf_reader.getNumPages()

for i in range(page_count):
    page = pdf_reader.getPage(i)
    xObject = page['/Resources']['/XObject'].getObject()

    for obj in xObject:
        if xObject[obj]['/Subtype'] == '/Image':
            size = (xObject[obj]['/Width'], xObject[obj]['/Height'])
            data = xObject[obj].getData()

            img = Image.frombytes('RGB', size, data)
            text = pytesseract.image_to_string(img, lang='eng')

            print(text)

在上面的代码片段中,我们首先使用 PyPDF2 库读取一个 PDF 文件,并使用 getNumPages() 方法获取总页面数。接下来,我们使用 getPage() 方法获取页面,并使用 getObject() 方法获取其中的 XObject。在获取到的 XObject 中,我们需要找到类型为 /Image 的对象。在找到这个对象之后,我们可以获取对象的大小,并使用 Pytesseract 库将其中的文本转化为可读的文本。

总结

在本文中,我们介绍了如何使用 Python 中的 PyPDF2 和 pytesseract 库对 PDF 文件进行 OCR 处理。使用 PyPDF2 库可以方便地读取 PDF 中的文本和元数据,并对 PDF 进行操作。而 pytesseract 库则可以识别各种格式的图像中的文本,这使得我们能够轻松地处理 PDF 文件中的文本。