Python 读取扫描版 PDF、图片 PDF 并进行 OCR 识别的方法:

pytesseract:一种基于 Python 的 OCR 库,可用于识别扫描版 PDF 和图片 PDF 中的文本。

它可以使用 Google 的 OCR 引擎进行识别,也可以使用本地的 OCR 引擎进行识别。使用 pytesseract 需要安装 Tesseract OCR 引擎和 pytesseract 库,可以通过以下命令安装:

pip install pytesseract
sudo apt-get install tesseract-ocr

然后,可以使用以下代码进行 PDF 中文文本的 OCR 识别:

import pytesseract
from pdf2image import convert_from_path

# 将 PDF 转换为图像
pages = convert_from_path('example.pdf')

# 识别 PDF 中的文本
text = ''
for page in pages:
    text += pytesseract.image_to_string(page, lang='chi_sim')

print(text)

PyPDF2:一种用于处理 PDF 文件的 Python 库,可以用于读取扫描版 PDF 中的文本。

使用 PyPDF2 需要安装 PyPDF2 库,可以通过以下命令安装:

pip install PyPDF2

然后,可以使用以下代码读取 PDF 中的文本:

import PyPDF2

# 打开 PDF 文件
with open('example.pdf', 'rb') as f:
    pdf_reader = PyPDF2.PdfReader(f)

    # 读取 PDF 中的文本
    text = ''
    for page in pdf_reader.pages:
        text += page.extract_text()

print(text)

pdfminer:一种用于提取 PDF 中文本和元数据的 Python 库。

使用 pdfminer 需要安装 pdfminer 库,可以通过以下命令安装:

pip install pdfminer

然后,可以使用以下代码提取 PDF 中的文本:

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO

# 打开 PDF 文件
with open('example.pdf', 'rb') as f:
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    # 读取 PDF 中的文本
    for page in PDFPage.get_pages(f):
        interpreter.process_page(page)

    text = retstr.getvalue()

print(text)

textract:一种用于提取 PDF 中文本和元数据的 Python 库,支持多种文件格式。

使用 textract 需要安装 textract 库和相应的依赖库,可以通过以下命令安装:

pip install textract
sudo apt-get install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig

然后,可以使用以下代码提取 PDF 中的文本:

import textract

# 读取 PDF 中的文本
text = textract.process('example.pdf', method='tesseract', language='chi_sim')

print(text)
OCR.space API:一种基于云的 OCR 服务,提供了 Python API。使用 OCR.space API 需要注册 OCR.space 帐户并获取 API 密钥,然后可以使用以下代码进行 OCR 识别:

import requests

# OCR.space API 的 URL 和 API 密钥
url = 'https://api.ocr.space/parse/image'
api_key = 'YOUR_API_KEY'

# 读取 PDF 中的图像
pages = convert_from_path('example.pdf')

# 识别 PDF 中的文本
text = ''
for page in pages:
    # 将图像上传到 OCR.space API 进行识别
    response = requests.post(url, files={'file': ('image.png', page, 'image/png')}, data={'apikey': api_key})

    # 解析 OCR.space API 的响应,并获取识别结果
    result = response.json()
    if result['IsErroredOnProcessing']:
        print(result['ErrorMessage'])
    else:
        text += result['ParsedResults'][0]['ParsedText']

print(text)

PyMuPDF:一种用于处理 PDF 文件的 Python 库,可以用于进行 PDF OCR 识别和文字搜索。

使用 PyMuPDF 需要安装 PyMuPDF 库,可以通过以下命令安装:

pip install PyMuPDF

然后,可以使用以下代码进行 PDF OCR 识别:

import fitz

# 打开 PDF 文件
doc = fitz.open('example.pdf')

# 对 PDF 进行 OCR 识别
for page in doc:
    page.run_ocr()
    text = page.get_text()

print(text)
也可以使用以下代码进行 PDF 文字搜索:

import fitz

# 打开 PDF 文件
doc = fitz.open('example.pdf')

# 搜索 PDF 中的文本
for page in doc:
    text_instances = page.search_for('search_text')
    for inst in text_instances:
        highlight = page.add_highlight_annot(inst)
        highlight.update()

# 保存修改后的 PDF 文件
doc.save('example_highlighted.pdf')

pdfplumber:一种用于提取 PDF 中文本和元数据的 Python 库,支持多种文件格式。使用 pdfplumber 需要安装 pdfplumber 库,可以通过以下命令安装:

pip install pdfplumber

然后,可以使用以下代码进行 PDF OCR 识别:

import pdfplumber

# 打开 PDF 文件
with pdfplumber.open('example.pdf') as pdf:
    # 对 PDF 进行 OCR 识别
    for page in pdf.pages:
        text = page.extract_text()

print(text)
也可以使用以下代码进行 PDF 文字搜索:

import pdfplumber

# 打开 PDF 文件
with pdfplumber.open('example.pdf') as pdf:
    # 搜索 PDF 中的文本
    for page in pdf.pages:
        text_instances = page.find('search_text')
        for inst in text_instances:
            page.add_rectangle(inst['x0'], inst['top'], inst['x1'], inst['bottom'], fill=None, stroke_width=1)

    # 保存修改后的 PDF 文件
    pdf.save('example_highlighted.pdf')

PyPDF2:一种用于处理 PDF 文件的 Python 库,可以用于进行 PDF OCR 识别和文字搜索。使用 PyPDF2 需要安装 PyPDF2 库,可以通过以下命令安装:

pip install PyPDF2

然后,可以使用以下代码进行 PDF OCR 识别:

import PyPDF2

# 打开 PDF 文件
with open('example.pdf', 'rb') as f:
    pdf_reader = PyPDF2.PdfReader(f)

    # 对 PDF 进行 OCR 识别
    for page in pdf_reader.pages:
        text = page.extract_text()

print(text)
也可以使用以下代码进行 PDF 文字搜索:

import PyPDF2

# 打开 PDF 文件
with open('example.pdf', 'rb') as f:
    pdf_reader = PyPDF2.PdfReader(f)

    # 搜索 PDF 中的文本
    for page in pdf_reader.pages:
        if 'search_text' in page.extract_text():
            # TODO: 处理搜索结果
            pass

Adobe Acrobat DC Pro:Adobe Acrobat DC Pro 是一款功能强大的 PDF 编辑器,可以用于进行 PDF OCR 识别和文字搜索。

可以使用 Python 调用 Adobe Acrobat DC Pro 的 COM 接口来进行操作。具体步骤如下:

首先,需要在 Windows 系统中安装 Adobe Acrobat DC Pro,并打开“编辑”-“首选项”-“JavaScript”选项卡,启用“对外部 JavaScript 的调用”选项。

然后,可以使用以下代码进行 PDF OCR 识别:

import win32com.client
# 创建 Adobe Acrobat DC Pro 的 COM 对象
acrobat = win32com.client.Dispatch('AcroExch.App')

# 打开 PDF 文件
doc = win32com.client.Dispatch('AcroExch.PDDoc')
doc.Open('example.pdf')

# 对 PDF 进行 OCR 识别
for i in range(doc.GetNumPages()):
    page = doc.AcquirePage(i)
    pageOCR = win32com.client.Dispatch('AcroOCRPage')
    pageOCR.tesseractLanguage = 'chi_sim'
    pageOCR.bRecognizeText = True
    pageOCR.Recognize(page)
    text = pageOCR.GetText()

print(text)
也可以使用以下代码进行 PDF 文字搜索:

import win32com.client

# 创建 Adobe Acrobat DC Pro 的 COM 对象
acrobat = win32com.client.Dispatch('AcroExch.App')

# 打开 PDF 文件
doc = win32com.client.Dispatch('AcroExch.PDDoc')
doc.Open('example.pdf')

# 搜索 PDF 中的文本
search_text = 'search_text'
search = win32com.client.Dispatch('AcroExch.PDTextSelect')
search.pageNum = 0
search.charIndex = 0
search.query(search_text)
while search.findNext():
    # TODO: 处理搜索结果
    pass

Tika:一种用于提取 PDF 中文本和元数据的 Python 库,支持多种文件格式。使用 Tika 需要安装 Tika 库和 Java 运行环境,可以通过以下命令安装:

pip install tika
sudo apt-get install default-jdk

然后,可以使用以下代码进行 PDF OCR 识别:

from tika import parser

# 读取 PDF 文件
with open('example.pdf', 'rb') as f:
    # 对 PDF 进行 OCR 识别
    text = parser.from_file(f, language='chi_sim')['content']

print(text)
也可以使用以下代码进行 PDF 文字搜索:

from tika import parser

# 读取 PDF 文件
with open('example.pdf', 'rb') as f:
    # 搜索 PDF 中的文本
    search_text = 'search_text'
    text = parser.from_file(f, xmlContent=True)['content']
    if search_text in text:
        # TODO: 处理搜索结果
        pass

以上是Python 进行 PDF OCR 识别和文字搜索的方法,包括调用 Adobe Acrobat DC Pro 的方法,你可以根据具体需求选择适合自己的方法。

05-24 15:49