【发布时间】:2022-01-24 17:23:47
【问题描述】:
我想用 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 文件
【问题讨论】:
-
“在文件中,文本在一个数组中”我不明白这是什么意思。您是否有这样的印象,因为 PDF 有以图形方式绘制的线条,这应该告诉您一些关于所提取文本结构的信息? PDF 不是为这种事情设计的。它旨在实现准确的图像渲染,而不是使文件内的内容井井有条。它内部当然没有文本“数组”。
-
就像文档告诉你的那样:
Locate all text drawing commands, in the order they are provided in the content stream, and extract the text. This works well for some PDF files, but poorly for others, depending on the generator used. This will be refined in the future. Do not rely on the order of text coming out of this function, as it will change if this function is made more sophisticated.PDF 存储 文本绘图命令 - 它会说在页面上的某处放置一些文本,很多时候,可能还有其他东西.图书馆必须猜测它们应该处于什么“顺序”。 -
@KarlKnechtel 我认为这个文件中不仅有一个文本命令,而且 PyPDF2 将它们“全部合二为一”。
-
我想告诉你的是,这就像你有一堆汉堡,你想把牛拿回来。
-
@KarlKnechtel 好的,我正在尝试寻找另一种方法来获取我的数据,而不使用 PDF。