Compartilhamento de tecnologia

Comece com o reconhecimento de imagem e texto sem dificuldade ~ Simples ocr e converta pdf em txt com base em polpa voadora

2024-07-08

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

Insira a descrição da imagem aqui

Prefácio

Este pdf é adequado para usuários novatos do Windows que não possuem nenhum conhecimento básico de reconhecimento visual. Chefe, por favor, faça um desvio ~~
Perceber:
O OCR do PDF neste projeto não faz nenhum processamento para interferências como tabelas, texto de desenho, marcas d'água, etc. Portanto, espero que os PDFs que utilizam esta função não contenham ao máximo esses itens de interferência para evitar afetar o efeito de tradução.

processo

1. Construir ambiente

Crie um ambiente virtual python usando conda

conda crate -n pp python==3.11

2. Pacote de instalação

Instale paddle e paddleocr
versão GPU

pip instalar paddlepaddle-gpu paddleocr

versão da CPU

pip instalar paddlepaddle paddleocr

ferramenta pdf para imagem

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

pip instalar pdf2image

3. Código específico

Suponha que temos vários arquivos PDF na pasta pdfs e precisamos converter cada arquivo PDF em um arquivo txt correspondente.Você pode usar o seguinte 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.Atenção

Como este código pode simplesmente extrair o texto do PDF, uma vez produzidas imagens ou tabelas, o efeito de reconhecimento da página será deteriorado.