Partage de technologie

Démarrez avec la reconnaissance d'images et de texte sans difficulté ~ OCR simple et conversion de pdf en txt basé sur la pulpe volante

2024-07-08

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

Insérer la description de l'image ici

Préface

Ce pdf convient aux utilisateurs Windows purement novices qui n’ont aucune connaissance de base en reconnaissance visuelle. Patron, s'il vous plaît, faites un détour~~
Avis:
L'OCR du PDF dans ce projet n'effectue aucun traitement pour les interférences telles que les tableaux, les dessins de texte, les filigranes, etc. Par conséquent, j'espère que les PDF qui utilisent cette fonction ne contiendront pas autant que possible ces éléments d'interférence pour éviter d'affecter l’effet de traduction.

processus

1. Créer un environnement

Créer un environnement Python virtuel à l'aide de conda

conda crate -n pp python==3.11

2. Forfait d'installation

Installer la pagaie et le paddleocr
version GPU

pip installe paddlepaddle-gpu paddleocr

version du processeur

pip installer paddlepaddle paddleocr

outil pdf en image

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

pip installe pdf2image

3. Code spécifique

Supposons que nous ayons un tas de fichiers PDF dans le dossier PDF et que nous devions convertir chaque fichier PDF en un fichier txt correspondant.Vous pouvez utiliser le code suivant


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.Attention

Étant donné que ce code ne peut extraire que simplement le texte du PDF, une fois les images ou les tableaux produits, l'effet de reconnaissance de la page sera détérioré. Veuillez comprendre ~.