CodeGym /Kurslar /Python SELF AZ /Mətnin PDF-dən CSV və ya Excel formatına çevrilməsi üçün ...

Mətnin PDF-dən CSV və ya Excel formatına çevrilməsi üçün analiz

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. PDF-analitik

Niyə PDF-i CSV və ya Excel-ə çevirmək lazımdır?

Bu məsələyə keçməmişdən əvvəl, gəlin ümumiyyətlə niyə belə çevirmələr etməyin lazım olduğunu danışaq. PDF sənədlər geniş şəkildə məlumat ötürülməsi məqsədilə istifadə olunur, çünki onlar sabitlik və çap üçün rahatlıq təmin edir.

Lakin, söhbət data analizinə gəldikdə, PDF analitiklərin ən yaxşı dostu deyil. Məhz burada CSV və Excel faylları meydana çıxır. Onlar analiz üçün əlverişlidir, Excel-də asanlıqla açıla bilər və ya istənilən analitik alətə import edilə bilər. Bu formatlarda məlumatları oxumaq, filtrasiya etmək, sıralamaq və vizuallaşdırmaq çox rahatdır. Kim belə bir rahatlıqdan imtina etmək istəyər ki?

Alətlər və kitabxanalar

Məqsədimizə çatmaq üçün biz bir neçə Python kitabxanasından istifadə edəcəyik. Bu kitabxanalar PDF sənədinin "PDF lənətindən" qurtulmasına və onu möhtəşəm bir CSV-yə (və ya Excel-ə, əgər siz bunu üstün tutursunuzsa) çevirməyə kömək edəcək. Bunlar PyPDF2, PDFPlumber və pandas-dır. PyPDF2 bizə PDF-dən mətni çıxarmağa imkan verir, PDFPlumber bunu peşəkar səviyyədə edir, pandas isə məlumatlarla cədvəl (table) kimi işləməyə şərait yaradır.

Əgər bu kitabxanaları hələ quraşdırmamışsınızsa, niyə məhz indi bunu etməyəsiniz? Terminalda aşağıdakı kodu daxil edin:

Bash
pip install PyPDF2 PDFPlumber pandas

Bunu etdik, indi isə işə başlayaq!

2. PDF sənədindən mətnin çıxarılması

PyPDF2 ilə mətnin çıxarılması

Birinci vəzifə - PDF-dən qiymətli mətn çıxarmaqdır. Bunun üçün PyPDF2 kitabxanasından istifadə edəcəyik. Gəlin kiçik bir skript yazıb PDF faylını açaq və sənədin hər səhifəsindən mətn çıxaraq.

Python

import PyPDF2

# Faylı açırıq
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    text = ""
    
    # Bütün səhifələri keçib mətn çıxarırıq
    for page in reader.pages:
        text += page.extract_text()
    
    print(text)  # Çıxarılan mətni göstəririk

Bax belə sadəcə! Faylı oxuduq və mətn çıxardıq. Ancaq mətnlər müxtəlifdir: bəzən əlavə emal lazım ola bilər, artıq simvolların silinməsi və ya qırılma xətləri əlavə edilməsi.

PDFPlumber ilə mətnin çıxarılması

PDFPlumber daha dəqiq şəkildə cədvəllər və mürəkkəb strukturlu PDF-lərlə işləyir. Bununla mətn çıxarmaq və cədvəllərlə işləmək mümkündür.

Python

import pdfplumber

# PDF faylını açırıq
with pdfplumber.open("sample_with_table.pdf") as pdf:
    text = ""
    for page in pdf.pages:
        text += page.extract_text() + "\n"

print(text)

Bu kod eyni şəkildə bütün səhifələrdən mətn çıxarır, amma PyPDF2-dən fərqli olaraq PDFPlumber cədvəl və işarələr ilə daha yaxşı işləyir.

PDFPlumber ilə cədvəllərin çıxarılması

Əgər PDF-də cədvəllər varsa, PDFPlumber onları siyahı şəklində çıxarmağa imkan verir ki, bu da onları daha sonra CSV və ya Excel formatına çevirmək işini asanlaşdırır.

Python

import pdfplumber
import pandas as pd

# PDF açılır və cədvəllər çıxarılır
with pdfplumber.open("sample_with_table.pdf") as pdf:
    all_tables = []
    for page in pdf.pages:
        table = page.extract_table()
        if table:
            all_tables.extend(table)

# Məlumatları DataFrame-ə çeviririk
df = pd.DataFrame(all_tables[1:], columns=all_tables[0])  # İlk sətir başlıqlardır
print(df)

Bu kod, PDF-dən cədvələ çevrilmiş məlumatları DataFrame-də saxlayır ki, bu da cədvəli asanlıqla CSV və ya Excel formatında saxlamağa imkan verir.

3. Məlumatların saxlanması

Mətni DataFrame-ə çevirmək

İndi bizdə mətn var və təsəvvür edək ki, o, hər biri gələcək cədvəlimizin bir sətrinə uyğun olan sətirlərlə "bağlanıb". Bizim vəzifəmiz pandas istifadə edərək onu DataFrame-ə çevirmək və sonra CSV faylı kimi saxlamaq olacaq.

Python

import pandas as pd

# Təsəvvür edək ki, mətnin hər sətri məlumat sətrinə uyğundur
data = text.split('\n')
data = [row.split(',') for row in data if row.strip() != '']  # Sətirləri vergül üzrə bölürük

# DataFrame yaradırıq
df = pd.DataFrame(data[1:], columns=data[0])  # İlk sətri başlıq kimi istifadə edirik

# DataFrame-i CSV olaraq saxlayırıq
df.to_csv('output.csv', index=False)

Burada biz sadəcə bütün mətni sətirlərə böldük, sonra ayrı elementlərə parçaladıq və DataFrame yaradaraq ilk sətirdən sütun başlıqları kimi istifadə etdik. Bundan sonra isə onu CSV faylı kimi saxladıq. Yuhuu! Biz əvvəllər yalnız qələm və kalkulyatorla uzun müddət əl işi tələb edən bir işi həyata keçirdik.

Məlumatların CSV formatına çevrilməsi

PDF-dən mətn və ya cədvəllər çıxarıldıqdan sonra Pandas kitabxanası vasitəsilə məlumatları CSV formatına saxlamaq olar.

Məlumatların CSV-də saxlanması

Python

# Məlumatları CSV-də saxlayırıq
df.to_csv("output.csv", index=False)
print("Məlumatlar uğurla output.csv faylına saxlanıldı")

Bu kod DataFrame-i PDF-dən çıxarılan məlumatlarla birlikdə output.csv faylına saxlayır, hansı ki, istənilən cədvəl redaktorunda açıla bilər və ya analitik platformaya yüklənə bilər.

Excel-ə çevrilmə

Bəs istəyirsinizsə, heç də az olmayan Excel? Problem yoxdur! pandas bunu həyata keçirmək üçün hər şeyi təmin edir. Sadəcə, əvvəlki nümunədəki sonuncu sətri bu ilə əvəz edin:

Python

df.to_excel('output.xlsx', index=False)

Beləliklə, sizin DataFrame-iniz Excel faylına saxlanacaq və siz onu istədiyiniz kimi gəzdirmək, hər cür filtrlər tətbiq etmək və Excel-in pivot cədvəllərindən istifadə etmək üçün istifadə edə bilərsiniz — bütün bunlar sizi korporativ gecədə ilin analitiki edir.

Xüsusiyyətlər və çətinliklər

Həmişə olduğu kimi, yolumuzda müəyyən maneələr var. PDF-dən mətn çıxarmaq bəzən nənəyə "bulud saxlancının" nə olduğunu izah etməyə çalışmaq kimi olur. Bəzi PDF-lər mürəkkəb strukturlara malikdir, məsələn cədvəllər, qrafiklər və şəkillər, onları mətnə, xüsusən də strukturlaşdırılmış mətnə çevirmək asan deyil. Belə hallarda əlavə mətn emalı, regular expressions-dən istifadə və ya hətta PDF-dəki şəkillərdən məlumat çıxarmaq üçün xüsusi OCR-kütüxanələr lazım ola bilər.

Bundan əlavə, bütün PDF sənədləri avtomatlaşdırma üçün eyni dərəcədə uyğun deyil. Bəziləri şifrlənir və ya şifrə ilə qorunur. PyPDF2 şifrə ilə işləməyi təmin edir, lakin şifrələmə ilə iş bir az daha mürəkkəbdir.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION