logo

פייתון שולחן

הקדמה

בדרך כלל, אין צורך שהנתונים שבהם אנו משתמשים יהיו זמינים בפורמט CSV או JSON. ניתן לאחסן את הנתונים בצורה של טבלה בקובץ PDF. כמקרה פשוט ביותר, אנו יכולים להעתיק ולהדביק את הטבלה בגיליון אלקטרוני או בעורך טקסט. אבל יכול להיות גם שאנחנו יכולים יותר מטבלה אחת באותו PDF שיש לה מבנים דומים. במקרים כאלה, עלינו להעתיק ולהדביק כל אחת מהטבלאות הללו בנפרד, מה שהופך את העבודה למייגעת.

עם זאת, כדי לחתוך את העבודה המשמימה הזו, Python מספקת ספריית קוד פתוח, הידועה גם בשם table-py , המאפשר למשתמשים לחלץ יותר מטבלה אחת באופן מובהק. במדריך הבא נלמד על טבולה ותפקידיה.

מה זה טאבולה?

Tabular היא מעטפת בסיסית של tabula-java המאפשרת למשתמשים לחלץ את הטבלה ולהמיר את קובץ ה-PDF ישירות ל-Data Frames או JSON באמצעות שפת תכנות Python . המשתמש יכול גם לחלץ טבלאות מ-PDF ולהמיר אותן לקבצים בפורמט TSV, CSV או JSON.

Tabula הוא כלי המבוסס על יישום ממשק משתמש גרפי (GUI); למרות זאת, שולחן-ג'אווה הוא כלי המבוסס על ממשק משתמש שורת פקודה (CUI). tabula-java מספק את הכריכות של Ruby, R ו-NodeJS אך לא עבור Python. לפיכך, המפתחים הציגו את המושג של table-py שמספק כריכת Python.

כעת, הבה נבין מי משתמש בטאבולה וכיצד אנו יכולים להתקין אותה.

מערכת הפעלה ברשת

מי משתמש בטאבולה?

Tabula הוא כלי רב עוצמה שנמצא בשימוש על ידי ארגוני חדשות בכל הגדלים כדי להעצים דיווח חקירתי. אלה ארגוני חדשות הם The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion (ארגנטינה), ו-St. Paul (MN) Pioneer Press.

ישנם ארגונים עממיים כגון SchoolCuts.org אשר תלויים גם בטאבולה על מנת להמיר מסמכים מגושם למשאבים ציבוריים ידידותיים לאדם.

מלבד האמור לעיל, ישנם חוקרים מרקעים אחרים המשתמשים בטאבולה להפיכת דוחות ה-PDF שלהם לגיליונות אלקטרוניים של Excel, CSVs וקבצי פורמט JSON ומשתמשים בו למטרת ניתוח ויישומי מסד נתונים.

יישום של Tabula ב-Python

לאחר שדיברנו קצת על Tabula, הבה נבין את היישום שלה ב- Python.

התקנה של הספרייה

מאז table-py היא ספריית קוד פתוח של Python, נשתמש ב- צִפצוּף מתקין על מנת להתקין את הספרייה.

 $ pip install tabula-py 

ייבוא ​​של הספרייה

לאחר השלמת ההתקנה, נוכל לאמת אותה פשוט על ידי ייבוא ​​הספרייה כפי שמוצג להלן:

 import tabula 

במקרה שהתוכנית תחזיר an שגיאת ייבוא , מומלץ להתקין מחדש את החבילה.

ה table-py הספרייה מספקת פונקציות שונות כגון קריאת קובץ PDF, קריאת טבלה בעמוד מסוים של קובץ PDF, קריאת טבלאות מרובות באותו עמוד של קובץ PDF, או המרת קבצי PDF ישירות לקובץ CSV.

נתחיל בקריאת קובץ PDF

קריאת קובץ PDF

ה table-py הספרייה מאפשרת למשתמשים שלה לקרוא קובץ PDF באמצעות הפונקציה הידועה בשם read_pdf() פוּנקצִיָה.

תחביר:

 obj = tabula.read_pdf(filename, args[]) 

פרמטרים:

שם קובץ: ה שם קובץ פרמטר הוא שם קובץ ה-PDF; נרצה לקרוא את הנתונים.

הבה נמיר את טבלת הנתונים ב-PDF הבאה למסגרת נתונים של pandas.

שם הקובץ: marksheet_table.py

עמוד: 1

שֵׁם אנגלית פיזיקה כִּימִיָה ביולוגיה סה'כ
א 86 54 65 83 288
ב 56 ארבע חמש 80 55 236
ג 3. 4 66 73 90 263
ד 77 75 46 3. 4 232
ו 74 82 55 77 288
ו 69 76 82 46 273
ג 53 33 29 ארבע חמש 160
ח 70 41 67 23 201
אני 80 43 88 28 239
י 90 37 ארבע חמש 71 243
ק 98 55 88 81 322
ל 90 54 67 37 248
M 87 76 88 54 305
נ 86 69 82 66 303
O 67 74 54 65 260
פ 75 96 53 67 291
ש ארבע חמש 87 80 ארבע חמש 257
ר 44 66 49 78 237
ס 78 39 78 80 275
ט 56 54 76 86 273
IN 43 90 64 77 274
IN 95 88 66 55 304
IN 64 67 86 80 297
איקס 82 56 ארבע חמש 65 248
ו 79 65 70 54 268
עם 83 54 40 75 252

להלן דוגמה שניתנה להלן, המדגימה כיצד לחלץ את הנתונים מה-PDF.

דוגמא:

 # importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 1) # printing the table print(mytable[0]) 

תְפוּקָה:

 Name English Physics Chemistry Biology Total 0 A 86 54 65 83 288 1 B 56 45 80 55 236 2 C 34 66 73 90 263 3 D 77 75 46 34 232 4 E 74 82 55 77 288 5 F 69 76 82 46 273 6 G 53 33 29 45 160 7 H 70 41 67 23 201 8 I 80 43 88 28 239 9 J 90 37 45 71 243 10 K 98 55 88 81 322 11 L 90 54 67 37 248 12 M 87 76 88 54 305 13 N 86 69 82 66 303 14 O 67 74 54 65 260 15 P 75 96 53 67 291 16 Q 45 87 80 45 257 17 R 44 66 49 78 237 18 S 78 39 78 80 275 19 T 56 54 77 86 273 20 U 43 90 64 77 274 21 V 95 88 66 55 304 22 W 64 67 86 80 297 23 X 82 56 45 65 248 24 Y 79 65 70 54 268 25 Z 83 54 40 75 252 

הֶסבֵּר:

בדוגמה לעיל, ייבאנו את הספרייה הנדרשת והגדרנו משתנה המאחסן את הכתובת של קובץ הנתונים ב-PDF. לאחר מכן השתמשנו ב- read_pdf() פונקציה לקרוא את הנתונים מה-PDF ולהדפיס אותם עבור המשתמשים. כתוצאה מכך, טבלת הנתונים נקראה בהצלחה.

הערה: השתמשנו ב- דפים פרמטר בפונקציה read_pdf() לקריאת הנתונים מהעמודים שצוינו.

הבה נבחן דוגמה נוספת להדפסת הטבלאות מעמוד מסוים, נניח עמוד מספר 2.

דוגמא:

 # importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2) # printing the table print(mytable[0]) 

תְפוּקָה:

 Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 

הֶסבֵּר:

בדוגמה שלעיל, פעלנו באותו הליך כפי שעשינו קודם לכן. עם זאת, הקצינו את דפים פרמטר ל-2 והדפיס את הטבלה הראשונה של העמוד שצוין. כתוצאה מכך, טבלת האינדקס אפס בעמוד 2 הודפסה בהצלחה.

כעת, הבה נבין מה קורה כאשר יש יותר מטבלה אחת באותו עמוד של קובץ נתונים PDF.

להתחבר ל-Java של מסד נתונים

טיפול במספר טבלאות באותו עמוד של קובץ PDF

אנו יכולים לטפל ביותר מטבלה אחת באותו שימוש בפרמטר נוסף המכונה multiple_tables. ה multiple_tables פרמטר לוקח ערך בוליאני שעבורו ה- read_pdf() הפונקציה קוראת טבלאות מרובות כטבלאות עצמאיות אם היא נכונה או קוראת טבלאות מרובות כטבלה בודדת אם היא לא נכונה.

הבה נבחן את הדוגמה הבאה המדגימה כיצד לקרוא טבלאות מרובות כטבלאות עצמאיות.

דוגמא:

 # importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2, multiple_tables = True) # printing the table print(mytable[0]) print(mytable[1]) 

תְפוּקָה:

 Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 Name Position 0 K I 1 M II 2 V III 3 N IV 4 W V 

הֶסבֵּר:

בדוגמה הבאה, ייבאנו שוב את הספרייה הנדרשת והגדרנו את המשתנה המאחסן את הכתובת של קובץ ה-PDF. לאחר מכן השתמשנו ב- read_pdf() פונקציה וכלל את multiple_tables פרמטר מגדיר אותו ל נָכוֹן . לאחר מכן הדפסנו בנפרד את הטבלאות המרובות בעמוד 2 של קובץ ה-PDF.

כעת, הבה נבחן דוגמה כדי להבין כיצד לקרוא טבלאות מרובות כטבלה אחת.

דוגמא:

 # importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2, multiple_tables = False) # printing the table print(mytable[0]) 

תְפוּקָה:

 Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 26 Name Position 27 K I 28 M II 29 V III 30 N IV 31 W V 

הֶסבֵּר:

בדוגמה הבאה, הגדרנו כעת את multiple_tables פרמטר ל שֶׁקֶר . כתוצאה מכך, הטבלאות המופיעות בעמוד 2 מטופלות כאל טבלה אחת.

המרת קובץ PDF ישירות לקובץ CSV

אנו יכולים להמיר קובץ PDF המכיל נתונים טבלאיים ישירות לקובץ CSV בעזרת ה convert_into() שיטה ב טבלה סִפְרִיָה.

תחביר:

 tabula.convert_into('filename.pdf', 'newfilename.csv', args[]) 

הבה נבחן את הדוגמה הבאה הממחישה את ההמרה של קובץ ה-PDF לקובץ CSV.

דוגמא:

 # importing the library import tabula # address of the file myfile = 'marksheettable.pdf' # using the read_pdf() function tabula.convert_into(myfile, 'marksheet.csv') print('The PDF file has been converted successfully.') 

תְפוּקָה:

 'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully. 

הֶסבֵּר:

בדוגמה שלמעלה, ייבאנו שוב את הספרייה הנדרשת והגדרנו את המשתנה המכיל את הכתובת של קובץ ה-PDF. לאחר מכן השתמשנו ב- convert_into() שיטה להמיר את קובץ ה-PDF לקובץ ה-CSV והדפיס הודעת הצלחה.

יתרה מכך, אנו יכולים גם לראות כי התוכנית החזירה הצהרה האומרת כי 'עמודים' ארגומנט לא צוין. לפיכך, הטבלה המופיעה בעמוד 1 תחולץ כברירת מחדל.