Berbagi teknologi

Memulai pengenalan gambar dan teks tanpa kesulitan ~ Ocr sederhana dan mengonversi pdf ke txt berdasarkan Feipian

2024-07-08

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

Masukkan deskripsi gambar di sini

Kata pengantar

Pdf ini cocok untuk pengguna Windows pemula murni yang tidak memiliki pengetahuan dasar tentang pengenalan visual. Bos, silakan ambil jalan memutar~~
Melihat:
OCR PDF proyek ini tidak melakukan apa pun untuk menangani gangguan seperti tabel, teks gambar, tanda air, dll. Oleh karena itu, kami berharap PDF yang Anda gunakan fungsi ini sebisa mungkin tidak berisi item gangguan ini untuk menghindari pengaruh pada efek terjemahan.

proses

1. Membangun lingkungan

Buat lingkungan python virtual menggunakan conda

conda crate -n pp python==3.11

2. Paket instalasi

Instal dayung dan paddleocr
versi GPU

pip menginstal paddlepaddle-gpu paddleocr

versi cpu

pip instal dayung dayung dayungocr

alat pdf ke gambar

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

pip instal pdf2image

3. Kode khusus

Misalkan kita memiliki banyak file pdf di folder pdf, dan kita perlu mengonversi setiap file pdf menjadi file txt yang sesuai.Anda dapat menggunakan kode berikut


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

Karena kode ini hanya dapat mengekstraksi teks PDF, setelah gambar atau tabel dihasilkan, efek pengenalan halaman akan menurun. Harap dipahami~