Обмен технологиями

Начните распознавать изображения и текст с нулевой сложностью ~ Простое распознавание текста и преобразование PDF в TXT на основе летучей мякоти

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Вставьте сюда описание изображения

Предисловие

Этот PDF-файл подходит для начинающих пользователей Windows, не имеющих базовых знаний в области визуального распознавания. Босс, пожалуйста, сделайте объезд~~
Уведомление:
OCR PDF-файла в этом проекте не выполняет никакой обработки помех, таких как таблицы, текст рисунка, водяные знаки и т. д. Поэтому я надеюсь, что PDF-файлы, использующие эту функцию, не будут содержать эти элементы пересечения в максимально возможной степени, чтобы избежать влияния эффект перевода.

процесс

1. Создайте среду

Создайте виртуальную среду Python с помощью conda

conda crate -n pp python==3.11

2. Инсталляционный пакет

Установите весло и Paddleocr.
версия графического процессора

pip установить paddlepaddle-gpu paddleocr

версия процессора

pip install paddlepaddle paddleocr

инструмент PDF в изображение

https://github.com/oschwartz10612/poppler-windows/releases

pip установить pdf2image

3. Конкретный код

Предположим, у нас есть куча PDF-файлов в папке pdfs, и нам нужно преобразовать каждый PDF-файл в соответствующий текстовый файл.Вы можете использовать следующий код


from pdf2image import convert_from_path
import cv2
import numpy as np
from PIL import Image
import os
# 将 PDF 文件转换为图片列表
files = os.listdir('pdf')

for file in files:
    if not file.endswith('.pdf'):
        print(file)
        continue
    txt = file.replace('.pdf', '.txt')
    if os.path.exists('txt/' txt):
        continue
    txt_writer = open('txt/' txt, 'w',encoding='utf-8')
    images = convert_from_path('pdf/' file)
    # print(type(images))
    # print(images[0])
    # image = cv2.cvtColor(np.array(images[0]), cv2.COLOR_RGB2BGR)


    from paddleocr import PaddleOCR, draw_ocr

    # 创建 PaddleOCR 实例
    ocr = PaddleOCR(use_angle_cls=True, lang='ch',use_gpu=True)  # 默认使用英文模型,可以通过 lang 参数切换到中文模型

    # 遍历每一张图片并识别文字
    for i, image in enumerate(images):
        print('第{}张图片'.format(i 1))
        # 转换图片为可用于识别的格式
        # source = image.convert('RGB')
        image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)        # image.save(f'page_{i}.jpg')

        # 识别图片中的文字
        result = ocr.ocr(image, cls=True)

        # 打印识别结果
        try:
            for lines in result:
                for line in lines:
                    # print(line[1][0])
                    txt_writer.write(line[1][0] 'n')
        except:
            print(file '识别失败')
    txt_writer.close()


4. Внимание

Поскольку этот код может только просто извлечь текст PDF-файла, после создания изображений или таблиц эффект распознавания страницы будет ухудшаться. Пожалуйста, поймите ~.