Technologieaustausch

Beginnen Sie problemlos mit der Bild- und Texterkennung ~ Einfaches OCR und Konvertieren von PDF in TXT basierend auf Feipian

2024-07-08

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

Fügen Sie hier eine Bildbeschreibung ein

Vorwort

Dieses PDF ist für reine Windows-Anfänger geeignet, die keinerlei Grundkenntnisse in der visuellen Erkennung haben. Boss, bitte machen Sie einen Umweg~~
Beachten:
Die OCR der PDF-Datei dieses Projekts unternimmt nichts gegen Störungen wie Tabellen, Zeichnungstext, Wasserzeichen usw. Daher hoffen wir, dass die PDFs, in denen Sie diese Funktion verwenden, diese Störungselemente so weit wie möglich nicht enthalten, um eine Beeinträchtigung der zu vermeiden Übersetzungseffekt.

Verfahren

1. Umgebung erstellen

Erstellen Sie mit Conda eine virtuelle Python-Umgebung

conda crate -n pp python==3.11

2. Installationspaket

Installieren Sie Paddle und Paddleocr
GPU-Version

pip install paddlepaddle-gpu paddleocr

CPU-Version

pip installieren paddlepaddle paddleocr

PDF-zu-Bild-Tool

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

pip install pdf2image

3. Spezifischer Code

Angenommen, wir haben eine Reihe von PDF-Dateien im Ordner „pdfs“ und müssen jede PDF-Datei in eine entsprechende TXT-Datei konvertieren.Sie können den folgenden Code verwenden


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

Da dieser Code nur den Text der PDF-Datei extrahieren kann, wird der Erkennungseffekt der Seite nach der Erstellung von Bildern oder Tabellen beeinträchtigt. Bitte haben Sie Verständnis dafür