1

我知道关于这个主题有几个线程,但他们的解决方案似乎都不适合我。我在PDF 文档中有一个表格,我希望能够从中提取信息。我可以将文本复制并粘贴到 textedit 中,它清晰易读但并不真正可用。我的意思是所有文本都是可读的,但数据都由空格分隔,无法区分单元格内文本中的列和空格。

但每当我尝试使用 tabula 或 scraper wiki 之类的工具时,提取的文本都是垃圾。

有没有人能给我任何关于我如何解决这个问题的指示?

4

2 回答 2

0

这是使用 Python 和 Unix 的解决方案

在 Python 中:

import urllib
# download pdf
testfile = urllib.URLopener()
testfile.retrieve('http://www.european-athletics.org/mm/Document/EventsMeetings/General/01/27/52/10/EICH-FinalEntriesforwebsite_Neutral.pdf', 'test.pdf')

在 Unix 中:

$ pdftotext -layout test.pdf

test.txt 的输出片段:

Lastname Firstname Country DOB PB SB 1500m Men Rowe Brenton AUT 17/08/1987 Vojta Andreas AUT 09/06/1989 3:38.99 3:41.09 Khadiri Amine CYP 20/11/1988 3:45.16 3:45.16 Friš Jan CZE 19/12/1995 3:43.76 3:43.76 Holuša Jakub CZE 20/02/1988 3:38.79 3:41.54 Kocourek Milan CZE 06/12/1987 3:43.97 3:43.97 Bueno Andreas DEN 07/07/1988 3:42.78 3:42.78 Alcalá Marc ESP 07/11/1994 3:41.79 3:41.79 Mechaal Adel ESP 05/12/1990 3:38.30 3:38.30 Olmedo Manuel ESP 17/05/1983 3:39.82 3:40.66 Ruíz Diego ESP 05/02/1982 3:36.42 3:40.60 Kowal Yoann FRA 28/05/1987 3:38.07 3:39.22 Grice Charlie GBR 07/11/1993 3:39.44 3:39.44 O'Hare Chris GBR 23/11/1990 3:37.25 3:40.42 Orth Florian GER 24/07/1989 3:39.97 3:40.20 Tesfaye Homiyu GER 23/06/1993 3:34.13 3:34.13 Kazi Tamás HUN 16/05/1985 3:44.28 3:44.28 Mooney Danny IRL 20/06/1988 3:42.69 3:42.69 Travers John IRL 16/03/1991 3:42.52 3:43.74 Bussotti Neves Junior Joao Capistrano M. ITA 10/05/1993 3:47.58 3:47.58 Jurkēvičs Dmitrijs LAT 07/01/1987 3:45.95 3:45.95 Ingebrigtsen Henrik NOR 24/02/1991 3:44.00 Ingebrigtsen Filip NOR 20/04/1993 Krawczyk Szymon POL 29/12/1988 3:41.64 3:41.64 Ostrowski Artur POL 10/07/1988 3:41.36 3:41.36 ebrowski Krzysztof POL 09/07/1990 3:41.49 3:41.49 Smirnov Valentin RUS 13/02/1986 3:37.55 3:38.74 Nava Goran SRB 15/04/1981 3:40.65 3:44.49 Pelikán Jozef SVK 29/07/1984 3:43.85 3:45.51 Ek Staffan SWE 13/11/1991 3:43.54 3:43.54 Rogestedt Johan SWE 27/01/1993 3:40.03 3:40.03 Özbilen lham Tanui TUR 05/03/1990 3:34.76 3:38.05 Özdemir Ramazan TUR 06/07/1991 3:44.35 3:44.35

于 2015-03-03T15:50:56.370 回答
0

您还可以下载一个简单的命令行工具来处理您链接到的 PDF 文件。运行此命令以提取第一页上的表:

pdftotext     \
   -enc UTF-8 \
   -l 1       \
   -table     \
    EICH-FinalEntriesforwebsite_Neutral.pdf \
    EICH-FinalEntriesforwebsite_Neutral.txt
  • -enc UTF-8:设置文本编码,以便正确提取文本中的 Ö、Ä、Ü 和 İ(以及 ö、ä、ü、ß、á、š、ē、í 和 č)字符。
  • -l 1: 告诉命令提取页码 1 作为最后一页。
  • -table: 这是决定性的参数。

该命令产生以下输出:

EUROPEAN ATHLETICS INDOOR CHAMPIONSHIPS PRAGUE / CZE, 6-8 MARCH 2015 FINAL ENTRIES - MEN Lastname Firstname Country DOB PB SB 1500m Men Rowe Brenton AUT 17/08/1987 Vojta Andreas AUT 09/06/1989 3:38.99 3:41.09 Khadiri Amine CYP 20/11/1988 3:45.16 3:45.16 Friš Jan CZE 19/12/1995 3:43.76 3:43.76 Holuša Jakub CZE 20/02/1988 3:38.79 3:41.54 Kocourek Milan CZE 06/12/1987 3:43.97 3:43.97 Bueno Andreas DEN 07/07/1988 3:42.78 3:42.78 Alcalá Marc ESP 07/11/1994 3:41.79 3:41.79 Mechaal Adel ESP 05/12/1990 3:38.30 3:38.30 Olmedo Manuel ESP 17/05/1983 3:39.82 3:40.66 Ruíz Diego ESP 05/02/1982 3:36.42 3:40.60 Kowal Yoann FRA 28/05/1987 3:38.07 3:39.22 Grice Charlie GBR 07/11/1993 3:39.44 3:39.44 O'Hare Chris GBR 23/11/1990 3:37.25 3:40.42 Orth Florian GER 24/07/1989 3:39.97 3:40.20 Tesfaye Homiyu GER 23/06/1993 3:34.13 3:34.13 Kazi Tamás HUN 16/05/1985 3:44.28 3:44.28 Mooney Danny IRL 20/06/1988 3:42.69 3:42.69 Travers John IRL 16/03/1991 3:42.52 3:43.74 Bussotti Neves Junior Joao Capistrano M. ITA 10/05/1993 3:47.58 3:47.58 Jurkēvičs Dmitrijs LAT 07/01/1987 3:45.95 3:45.95 Ingebrigtsen Henrik NOR 24/02/1991 3:44.00 Ingebrigtsen Filip NOR 20/04/1993 Krawczyk Szymon POL 29/12/1988 3:41.64 3:41.64 Ostrowski Artur POL 10/07/1988 3:41.36 3:41.36 Żebrowski Krzysztof POL 09/07/1990 3:41.49 3:41.49 Smirnov Valentin RUS 13/02/1986 3:37.55 3:38.74 Nava Goran SRB 15/04/1981 3:40.65 3:44.49 Pelikán Jozef SVK 29/07/1984 3:43.85 3:45.51 Ek Staffan SWE 13/11/1991 3:43.54 3:43.54 Rogestedt Johan SWE 27/01/1993 3:40.03 3:40.03 Özbilen İlham Tanui TUR 05/03/1990 3:34.76 3:38.05 Özdemir Ramazan TUR 06/07/1991 3:44.35 3:44.35 3000m Men Rowe Brenton AUT 17/08/1987 Vojta Andreas AUT 09/06/1989 7:59.95 7:59.95

但是请注意:

pdftotext命令行工具的-table参数仅在 XPDF 版本 3.04 中可用,您可以在此处下载:www.foolabs.com/xpdf/download.html。它在 Poppler 的pdftotext分支(最新版本是 0.43.0)中不可用

如果您只有 Poppler 的pdftotext,则必须使用-layout参数(而不是-table),这可以为相关 PDF 文件提供同样好的结果:

pdftotext     \
   -enc UTF-8 \
   -l 1       \
   -layout    \
    EICH-FinalEntriesforwebsite_Neutral.pdf \
    EICH-FinalEntriesforwebsite_Neutral.txt

-table但是,我已经看到使用(和 XPDF)的结果比使用-layout(和 Poppler)的结果要好得多的 PDF 。

(XPDF 有-layout参数太——所以如果你尝试两者,你可以看到区别。)

于 2016-05-01T17:20:36.073 回答