Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Python merealisasikan pengecaman teks PD, pengekstrakan dan penulisan ke dalam perkongsian skrip fail CSV

Python merealisasikan pengecaman teks PD, pengekstrakan dan penulisan ke dalam perkongsian skrip fail CSV

PHPz
PHPzke hadapan
2023-05-17 19:40:041912semak imbas

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

1. Prakata

2. Penerangan keperluan

3. Mula menggunakan otak dan tangan anda

3.1 Pasang yang berkaitan ketiga- pakej pihak

3.2 Import perpustakaan pihak ketiga yang diperlukan

3.3 Baca fail pdf dan kenal pasti kandungan

3.4 Proses data yang dikenal pasti dan tuliskannya ke dalam fail csv

Ringkasan

1. Kata Pengantar

imbasan selalu popular di kalangan orang ramai. untuk menggunakannya, menjimatkan kebimbangan dan usaha. Walau bagaimanapun, kelebihan dokumen yang diimbas juga membawa kepada kelemahan Kerana ia diimbas melalui peranti elektronik, apa yang keluar adalah imej Jika anda ingin memproses kandungan pada fail, operasi langsung tidak boleh dilakukan.

Bagaimana jika anda ingin memetik kandungannya? Jangan risau, Python akan membantu anda menyelesaikan masalah tersebut.

2. Penerangan Keperluan

Terdapat imbasan pdf Kami ingin mengekstrak teks dan menulisnya ke dalam dokumen csv dalam tiga lajur:

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

pdfexample

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

csvexample

3 Mula menggunakan tangan dan otak anda

pdf imbasan ialah imbasan dokumen Ia ditukar kepada format gambar komputer, dan mengekstrak teks adalah sama dengan mengenal pasti teks dalam gambar. Oleh itu, tugas kami ialah menukar PDF kepada gambar, dan kemudian gunakan alat OCR untuk mengekstrak teks dalam gambar.

3.1 Pasang pakej pihak ketiga yang berkaitan

pip3 install pdf2image pytesseract

3.2 Import perpustakaan pihak ketiga yang diperlukan

import os #处理文件
from pdf2image import convert_from_path# pdf转图片
import pytesseract# 识别图片文字
import csv# 处理csv文件

3.3 Baca fail pdf dan kenal pasti kandungan

tess_ocr (pdf_path, lang, first_page, last_page)

Pisah fail pdf kepada gambar, dan ekstrak teks dan tulis ke dalam fail teks

  • pdf_path: Laluan storan pdf fail
  • imej: Senarai imej PIL yang mewakili setiap halaman dokumen PDF
  • first_page: membenarkan menetapkan halaman pertama diproses oleh pdftoppm
  • last_page: membenarkan menetapkan yang terakhir halaman diproses oleh pdftoppm
  • fmt: membenarkan menentukan format output. Format yang disokong pada masa ini ialah jpg, png dan ppm;
  • output_folder: laluan penjimatan imej
def tess_ocr(pdf_path, lang,first_page,last_page):
# 创建一个和pdf同名的文件夹
 images = convert_from_path(pdf_path, fmt='png',first_page=first_page,last_page=last_page,output_folder=imagefolder,userpw='site')# 转成图片
text = ''
for img in images:
 text += pytesseract.image_to_string(img, lang=lang) # 识别图片文字
 with open(r'exampledata.txt' 'a', encoding='utf-8') as f: #写入txt文件
 f.write(text)

Menjalankan hasil

Janakan folder dengan nama yang sama untuk menyimpan pemisahan Gambar, kemudian ekstrak teks gambar dan tulis ke dalam data.txt

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

imej-20211215212147760

Masalah berjalan

“ Masalah melempar 1 :

pdf2image.exceptions.PDFInfoNotInstalledError: Tidak dapat mendapatkan kiraan halaman Adakah poppler dipasang dan dalam PATH ”

Penyelesaian: Muat turun poppler.

>1 Kaedah 1: Tetapkan poppler/bin pembolehubah persekitaran

>2 Kaedah 2:

Parameter menentukan laluan mutlak:

imej = convert_from_path( pdf_path=pdf_file_path, poppler_path=r'alamat fail bin dalam poppler')

" " Masalah melontarkan 2:

pytesseract.pytesseract.TesseractNotFoundError: atau itsseract tidak dipasang bukan dalam PATH anda . Lihat fail README untuk maklumat lanjut ”

Penyelesaian: muat turun dan pasang tesseract-ocr dan konfigurasikan pembolehubah persekitaran.

3.4 Proses data yang dikenal pasti dan tuliskannya ke dalam fail csv

pengubahsuaian(fail dalam, fail luar)

Bersihkan dokumen teks yang dijana

  • infile: Alamat fail yang perlu diproses
  • outfile: Alamat fail baharu yang dijana selepas memproses Fail txt baharu, fail baharu memadamkan baris kosong dalam data.txt , dan menggantikan kandungan yang dikenal pasti secara salah dalam fail asal dengan yang betul.

writercsv(intxt,outcsv)

Tulis fail teks ke dalam jadual csv mengikut ruang

intxt: alamat fail teks

outcsv: Fail csv yang baru dijana

    def modification(infile, outfile):
    infp = open(infile, "r",encoding='utf-8')
    outfp = open(outfile, "w",encoding='utf-8')
    lines = infp.readlines() #返回列表,包含所有的行。
    #依次读取每行
    for li in lines:
    if li.split(): #str.split(str="", num=string.count(str)),过滤文件中的空行
    # 根据识别情况对数据进行清洗
    li = li.replace('[', ' ').replace(']', '')
    outfp.writelines(li)
    infp.close()
    outfp.close()
    
    
    
    
  • Hasil berjalan
  • menjana fail csv tiga lajur, lajur pertama ialah nama Inggeris dan lajur kedua ialah bahasa Cina nama , lajur ketiga ialah negara

imej-20211215204846623

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

imej-20211215204941725

Ringkasan

Melalui pembelajaran ini, kami telah menyedari keupayaan untuk mengekstrak teks daripada dokumen yang diimbas dan menulis kandungan ke dalam format yang berbeza mengikut keperluan dokumentasi.

Pada mulanya saya fikir perpustakaan untuk mengekstrak pdf juga sesuai untuk dokumen yang diimbas, jadi saya mencuba perpustakaan Pdfplumber dan perpustakaan PyPDF2.

Amalan mendapati bahawa Pdfplumber hanya boleh mengecam tera air dalam PDF yang diimbas dan tidak boleh digunakan pada PDF yang diimbas. Pustaka PyPDF2 menjalankan dan melaporkan ralat: NotImplementedError: hanya kod algoritma 1 dan 2 yang disokong.

Sebabnya ialah PDF yang disulitkan ini mungkin berasal daripada versi akrobot yang lebih tinggi, jadi kod algoritma penyulitan yang sepadan ialah '4' Namun, modul pypdf2 sedia ada hanya menyokong kod algoritma penyulitan '4' ' atau '2' fail pdf yang disulitkan.

Atas ialah kandungan terperinci Python merealisasikan pengecaman teks PD, pengekstrakan dan penulisan ke dalam perkongsian skrip fail CSV. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam