如何使用 Python 解析 PDF 中的数组?

How can I parse an array in a PDF using Python?

我想在 Python 中解析 PDF。目前我正在使用 PyPDF2.pdf.PageObject.extractText(),但文本是“一体式”。在文件中,文本在一个数组中,那么我该如何分隔每个单元格的内容?

当前结果

>>> file_in.getPage(0).extractText()
"Tous grades (7 parcours) - Gergy Esc - 18/07/2021RESULTATS - Agility (Grade 1) - Catégorie A - Classe SeniorJuge : WATTECAMPS Philippe - Obstacles : 15 - Longueur : 155 m - Vitesse : 2.98 m/sec - TPS : 52 sec - TMP : 103 secClas.Dos.Nom du ChienRace du chienConducteurClub / RégionaleTempsVit.Ev.PénalitésQual.Brevetsecm/sec>TPSParc.Total13NANA WELCOMTERRIER JACK RUSCOEUR ODELOT LILIANECC NIVERNAIS / BOURGOGNE38.734.0055.00EXC24JANACROISETORRES KARINAAMICALE DIJONNAISE DES SP48.323.211010.00TBON 1PIN-UPCHIEN DE BERGER LIOCHON SABRINACC D'AROMAS / FRANCHE-COELI 2SUPREME JUSTSTAFFORDSHIRE BLAGRANGE GHISLAINECLUB D'AGILITY DE SAINTE EUELIExcellentsTrès bonsBonsNon classésEliminésAbandons1 (25 %)1 (25 %)0 (0 %)0 (0 %)2 (50 %)0 (0 %)PROGESCO Version 21.05.11Imprimé le 24/01/2022 à 17:39:33Page 1 / 1"

预期结果

>>> file_in.getPage(0).extract()
["Tous grades (7 parcours) - Gergy Esc - 18/07/2021", "RESULTATS - Agility (Grade 1) - Catégorie A - Classe Senior", "Juge : WATTECAMPS Philippe - Obstacles : 15 - Longueur : 155 m - Vitesse : 2.98 m/sec - TPS : 52 sec - TMP : 103 sec", "Clas.", "Dos.", "Nom du Chien", "Race du chien", "Conducteur", "Club / Régionale", "Temps", "Vit.", "Ev.", "Pénalités", "Qual.", "Brevet", "sec", "m/sec",">TPS", "Parc.", "Total", "13", "NANA WELCOM", "TERRIER JACK RUS", "COEUR ODELOT LILIANE", "CC NIVERNAIS / BOURGOGNE", "38.73", "4.00", "55.00", "EXC", "24", "JANA", "CROISE", "TORRES KARINA", "AMICALE DIJONNAISE DES SP", "48.32", "3.21", "10", "10.00", "TBON", "1", "PIN-UP", "CHIEN DE BERGER", "LIOCHON SABRINA", "CC D'AROMAS / FRANCHE-CO", "ELI", "2", "SUPREME JUST", "STAFFORDSHIRE B", "LAGRANGE GHISLAINE", "CLUB D'AGILITY DE SAINTE EU", "ELI", "Excellents", "Très bons", "Bons", "Non classés", "Eliminés", "Abandons", "1 (25 %)", "1 (25 %)", "0 (0 %)", "0 (0 %)", "2 (50 %)", "0 (0 %)", "PROGESCO Version 21.05.11", "Imprimé le 24/01/2022 à 17:39:33", "Page 1 / 1"]

PDF 文件

使用pdftotext,我可以得到PDF文件的文本内容:

>>> import pdftotext
>>> pdf = pdftotext.PDF(open("file.pdf", "br"))
>>> print(pdf[0])
['Concours Classique - Wihr Au Val - Ecvm - 29/07/2018', 'RESULTATS - Agility 3 - Catégorie A - Classe Senior\nJuge : JEANCLAUDE Philippe - Obstacles : 21 - Longueur : 215 m - Vitesse : 4.22 m/sec - TPS : 51 sec - TMP : 108 sec', 'Clas. Dos. Nom du Chien\n1\n2\n3\n4\n5\n6', '13\n106\n49\n61\n74\n79\n29', 'Race du chien', 'Conducteur', 'Club / Régionale', 'HERMES\nEPAGNEUL NAIN CON LAFFAY GUILLAUME\nDELISSE NOIRE\nCHIEN DE BERGER D REINHARDT ANNABELLE\nGALEOTTI BETHANY JCHIEN DE BERGER D MATHIEU DOMINIQUE\nJOUKY\nTERRIER DU REVERE ETEVENOT ALICE\nIRON BLACK\nCHIEN DE BERGER D REINLE JENNIFER\nHOLLYWOOD HILLS O CHIEN DE BERGER D SCHALLER CELIA\nELONA\nCHIEN DE BERGER D WITTNER BERNARD', 'EGUENIGUE - CECBN / FRANCHECHATENOIS - CCCA / BAS RHIN\nTHIONVILLE - TCCT / LORRAINE\nBRECHAUMONT - SCB / HAUT RHI\nVILLAGE NEUF - CUCCF / HAUT RH\nVILLAGE NEUF - CUCCF / HAUT RH', 'Temps\nsec\n43.81\n43.88\n44.06\n45.09\n45.18\n46.72', 'Vit.Ev.\nm/sec\n4.91\n4.90\n4.88\n4.77\n4.76\n4.60', 'Pénalités\n>TPS\nParc.\nTotal', '5', '5.00', 'LUTTERBACH - TCCL / HAUT RHIN', 'Excellents', 'Très bons', 'Bons', 'Non classés', 'Eliminés', 'Abandons', '6 (85.71 %)', '0 (0 %)', '0 (0 %)', '0 (0 %)', '1 (14.29 %)', '0 (0 %)', 'PROGESCO Version 00.00.00', 'Imprimé le 29/07/2018 à 11:30:49', 'Qual.\nEXC\nEXC\nEXC\nEXC\nEXC\nEXC\nELI', 'Page 1 / 1', '\x0c']

虽然不完美,但我觉得已经是最好的结果了