Compartir tecnología

Comience con el reconocimiento de imágenes y texto sin dificultad ~ Ocr simple y convierta pdf a txt basado en pulpa voladora

2024-07-08

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

Insertar descripción de la imagen aquí

Prefacio

Este pdf es adecuado para usuarios novatos de Windows que no tienen conocimientos básicos de reconocimiento visual. Jefe, por favor tome un desvío ~~
Aviso:
El OCR del PDF en este proyecto no realiza ningún procesamiento de interferencias como tablas, texto de dibujo, marcas de agua, etc. Por lo tanto, espero que los archivos PDF que utilizan esta función no contengan estos elementos de interferencia tanto como sea posible para evitar afectar El efecto de traducción.

proceso

1. Construir entorno

Cree un entorno virtual de Python usando conda

conda crate -n pp python==3.11

2. Paquete de instalación

Instalar remo y paddleocr
versión gpu

instalación de pip paddlepaddle-gpu paddleocr

versión de la CPU

pip instalar paddlepaddle paddleocr

herramienta de pdf a imagen

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

instalación de pip pdf2image

3. Código específico

Supongamos que tenemos un montón de archivos pdf en la carpeta pdfs y necesitamos convertir cada archivo pdf en un archivo txt correspondiente.Puedes usar el siguiente código


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.Atención

Dado que este código solo puede extraer simplemente el texto del PDF, una vez que se produzcan imágenes o tablas, el efecto de reconocimiento de la página se deteriorará. Por favor, comprenda ~.