pdf2table:AMethodtoExtractTableInformationfrom
PDFFiles
BurcuYildiz,KatharinaKaiser,andSilviaMiksch
InstituteofSoftwareTechnology&InteractiveSystems
ViennaUniversityofTechnology,Vienna,Austria
{
yildiz, kaiser, silvia
}
@asgaard.tuwien.ac.at
Abstract. Tablesareacommonstructuringelementinmanydocuments,suchas
PDF files. To reuse such tables, appropriate methods need to b e develop, which
capture the structure and the content information. We have developed several
heuristicswhich together recognize and decompose tables in PDFfiles and store
the extracted data in a structured data format (XML) for easier reuse. Addition-
ally, we implemented a prototype, which gives the user the ability of making
adjustments on the extracted data. Our work shows that purely heuristic-based
approaches can achieve good results, especially for lucid tables.
1 Introduction
The amount of accessible data we are facing today makes it necessary to develop ef-
ficient Information Engineering concepts and tools to bette r process and use the data.
Information Engineering comprises such a wide dimension of sub-areas that one can-
notexpect thata singleconceptor tool canfittheneeds of all [1]. One of these sub-areas
is thefieldof Information Extraction(IE). IE is the taskof e xtractingrelevantfacts from
textandrepresentingthem in someuseful form.The developmentof thisfieldwas influ-
enced and fosteredby a series of Message UnderstandingConferences (MUCs) starting
in 1987 which served as a platform for evaluating different IE projects developed by
differentsites [2,3]. The field of IE can also be split into so me sub-tasks.
One sub-task is the task of Table Extraction (TE) which is the subject of this paper.
This task is important, because tables are amongthemostcommon means of presenting
and structuring data with a high information density. However, it is not an easy task,
because tables can be of varying formats. For example, some tables could have lines in
order to point out the cell boundaries, whereas others could have only white spaces to
achieve a table view. The only thing each table will certainly have is content.
Further,we concentratedonly on PDF files as input files. This data format is widely
known and used, because it allows users to create files that lo ok the same on different
output devices, no matter in which environmentthey were created.
Extracting different kinds of data and information from whole PDF files is a field
of research itself. Various tools were developed to support the extraction process. A
comparison [4] showed that the tool with the most useful output for our purpose was
thepdftohtml
1
tool developed by Gueorgui Ovtcharov and Rainer Dorsch. This tool
1
http://pdftohtml.sourceforge.net
Pdf metadata viewer online - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata
pdf metadata online; online pdf metadata viewer
Pdf metadata viewer online - VB.NET PDF metadata library: add, remove, update PDF metadata in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
change pdf metadata; get pdf metadata
returns all text elements (i.e., strings) in a PDF-file with t heir absolute coordinates in
the original file. Using this tool, our task became to extract table information from
semi-structured text files utilizing their absolute coordi nates.
2 Table Extraction
Table Extraction (TE) is the task of detecting and decomposing table information in a
document. This task attracted the attention of researchers because tables are one of the
mostused elements to present and structuredata and theyshould be extractedfor reuse.
While humanbeingscan easilyrecognize and understandtables, thingsaredifferent
for computers, because tables do not have any identifying characteristic in common.
They can contain delimiters ranging from graphical boundary lines to point out the
boundaries andtheseparationbetweenrows and cells, to onlywhite spaces to achieve a
tableview. Further, they canvaryin terms of containingspanningrows and/or columns.
Another pointthat makes TE harder is thattables can contain differenttypes of content,
such as text, figures, mathematical formulas, etc. [5] We had to take all the explained
difficulties into account in developingour approach.
Our work is based on the data returned by thepdftohtmltool (refer Section 1). For
each text chunk in the PDF file it returns a text element in XML w ith the following
attributes:
– top=verticaldistancefromthetopofthepage
– left=horizontaldistancefromtheleftborderofthepage
– width=widthofthetextchunk
– height=heightofthetextchunk
– font=thisattributedescribesthesize,family,andcolorofthetextchunk
We restricted our workto utilize onlythese five attributes f or extracting table infor-
mation and not, for example, graphical components like lines, etc. After applying the
pdftohtmltool,wehadtoextracttableinformationfromanXMLdocumentwithtext
elements describing the absolute position of a text chunk in a PDF file.
We have explored different kinds of tables according to their structure to develop
several heuristics.These heuristicscanbe groupedintwomain categories:(1) heuristics
intended to recognize a table and (2) heuristics intendedto decompose a table.
Table Recognition. Thistaskdealswiththeproblemofidentifyinga”construct ”asa
table. The level of difficulty of this task depends, among oth ers, on the document
in which the table is embedded. As we deal with an XML document which does
notmark-uptables, we have to identify aportion of text elements as a table only by
means of the knowledge of the absolute coordinates of the text elements.
Table Decomposition. Afterdetectingapartofafileasatable,thenextstepistode -
composethe table as close to the originalas possible. This taskincludes the correct
identificationof header elements, their spanning behavior (i.e., howmany columns
or rows are spanned), the correct assigning of data cells to header elements, and so
on.
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET NET read barcodes from PDF, C#.NET OCR scan PDF. Viewer & Editors, C# ASP.NET Document Viewer, C# Online
read pdf metadata online; pdf xmp metadata viewer
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
PDF Online. Convert PDF Online. WPF PDF Viewer. View PDF in Image to PDF. Image: Remove Image from PDF Page. Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
pdf remove metadata; batch edit pdf metadata
3 Our Approach
Our approach is based on heuristics, which we derived from comparing different kinds
of tablesaccordingtheir composition.Wegroupedour heuristics intasks of table recog-
nition and tabledecomposition. First, we explain our preprocessingandthen the heuris-
tics. Allthe algorithms are listed witha basicexplanation.Afterwards, we givea coher-
ent example, whichillustrates all the differentsteps.
Toease the understandingof our heuristics, we definesome ba sicterms, which will
be used throughout the paper.
– Text:containsastringandfiveattributes(top,left,width ,height,font)
– Line:containstextobjectswhichareassumedtobeonthesamelineintheoriginal
file
– Single-Line:lineobjectwithonlyonetextobject
– Multi-Line:lineobjectwithmorethanonetextobject
– Multi-LineBlock:setofcontinuousmulti-lineobjects
Basically, we assume the input document as a single column document. By using
auser interface the user can actually tell the implemented prototype the number of
columns of the document to achieve better results.
3.1 Preprocessing
Thepdftohtmltool returns text chunks and their absolute coordinates in the PDF file
in the same order as they were inserted into the original file. Because each author can
insertthe textin the order she/he wants, youcannot relyonly onthe ordering of the text
elements to make decisions. To avoid such uncertainties we fi fi rst sort all text elements
accordingto their top values.
Ascii
Sign
Ascii
Sign
Ascii
Sign
048
0
050
2
052
4
049
1
051
3
053
5
Fig.1.ExampleofatableinaPDFfile
The original ordering of the text elements in Fig. 1 can have several forms. One
possible ordering could be: Ascii, Sign, Ascii, Sign, Ascii, Sign, 048, 0, 050, 2, and so
on. Dependingon the author, another ordering couldbe:Ascii, 048, 049, Sign, 0, 1, and
soon. If we sort all thetext elements with respecttotheir top-values we canbe sure that
we always get the same ordering, no matter howtheauthor has inserted the text chunks.
For Fig. 1 the sorted orderingis: Sign, Sign, Sign, Ascii, Ascii, Ascii, 048, 0, 050, and
so on.
After this sortingprocess we want to assign text objects that are onthe same line to
aline object. Our heuristic for this task is described in Algorithm 1.
VB.NET PDF - WPF PDF Viewer for VB.NET Program
NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET NET read barcodes from PDF, C#.NET OCR scan PDF. Viewer & Editors, C# ASP.NET Document Viewer, C# Online
delete metadata from pdf; add metadata to pdf
VB.NET PDF - Create PDF Online with VB.NET HTML5 PDF Viewer
NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET NET read barcodes from PDF, C#.NET OCR scan PDF. Viewer & Editors, C# ASP.NET Document Viewer, C# Online
adding metadata to pdf files; bulk edit pdf metadata
Algorithm 1.Mergetextelementsonthesamelinetolineobjects
for each Text t {
Line pl = last Line in the Line list
if (t.top or t.bottom lies between pl.top and pl.bottom) {
add t to pl;
actualize values of pl.top and pl.bottom;
} else {
create new Line and add t to the new Line;
set top and bottom values of the new Line;
add new Line to the Line list;
}
}
After applyingAlgorithm 1, we have all the lines in the PDF fil e in our line object
list. We can start with the table recognition task.
3.2 Table Recognition
In this task, we utilize the gained information from our pre-processing to identify the
tables in the document. Our basic assumption for recognizing tables is: ”Tables must
have more than one column”. This indicates that each multi-l ine object can be a data
row of a table and each multi-line block object can actually be a table. Based on these
assumptions we describe our table recognitionheuristic in Algorithm 2.
Algorithm 2.Classifysingle-lineandmulti-lineobjectsanddetectmulti-lineblockobjects
multi-modus = false;
for each Line line {
if (number of Text objects in line > 1) {
mark line as Multi-Line;
if (multi-modus == false) {
create new Multi-Line Block;
add new Multi-Line Block to Multi-Line Block list;
multi-modus = true;
} else {
Multi-Line Block mlb = last added Multi-Line Block
to the Multi-Line Block list;
add line to Lines in mlb;
}
} else
if (number of Text objects in line == 1) {
Text t = the Text in line;
Multi-Line Block mlb = last added Multi-Line Block
to the Multi-Line Block list;
if (t belongs to mlb)
add line to Line in mlb;
else
// single-line
multi-modus = false;
}
}
C# HTML5 PDF Viewer SDK to create PDF document from other file
NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET NET read barcodes from PDF, C#.NET OCR scan PDF. Viewer & Editors, C# ASP.NET Document Viewer, C# Online
batch pdf metadata editor; pdf xmp metadata editor
C# WPF PDF Viewer SDK to view, annotate, convert and print PDF in
PDF Online. Convert PDF Online. WPF PDF Viewer. View PDF in Image to PDF. Image: Remove Image from PDF Page. Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
metadata in pdf documents; read pdf metadata
After this first classification of line objects as single-lin e and multi-line objects and
detecting multi-line block objects we have generated a heuristic to merge multi-line
block objects that may belong to the same table. We selected a threshold value of five
and assume that if there are more than five single-line object s between two multi-line
block objects, than these multi-line block objects represent two distinct tables. Algo-
rithm 3 presents this heuristic.
Algorithm 3.Mergemulti-lineblockobjectswhichmaybelongtothesametable
for each Multi-Line Block mlb {
p_mlb = previous Multi-Line Block in the Multi-Line Block list;
n_mlb = next Multi-Line Block in the Multi-Line Block list;
for each Line between mlb and p_mlb
try to merge Line to mlb;
if (number of Lines between mlb and p_mlb <=5 and mlb and
p_mlb on the same page) {
merge mlb and p_mlb;
}
for each Line between mlb and n_mlb
try to merge Line to mlb;
if (Line between mlb and n_mlb <=5 and mlb and
n_mlb on the same page) {
merge mlb and n_mlb;
}
}
After the merging process we have all multi-line block objects that can be a table.
We are not taking multi-line block objects with less than two rows into account for
furtherprocessing.Thenextstep is todecompose the remainingmulti-lineblockobjects
to tables.
3.3 Table Decomposition
Havingall possible tables detectedwe can concentrate ondecomposingthe information
in these multi-line block objects. Due to the fact that each text element will be in (at
least) one column, we simplify our decomposition task and try to find the appropriate
column for each text element in a multi-line block object (refer Algorithm 5). We start
with no column at hand. For the first text element there will be a new column created.
After that, for each text element the boundaries of the text element will be compared
with the existing columns' boundaries. Accordingto that, if a text elements' horizontal
boundaries fit into a columns' boundaries it will be added to t his column, if not, a
new column will be created and the text element will be added into it. If more than
one text element in a line falls into the boundaries of a column the spanning will be
increased. After adding a text element to a column, the boundaryvalues of the column
are actualized.
Our heuristic for this task is described inAlgorithm 4.
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
This online HTML5 PDF document viewer library component offers reliable and excellent functionalities. C#.NET users and developers
remove metadata from pdf online; edit pdf metadata acrobat
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
zonal information, metadata, and so on. Extract image from PDF free in .NET framework application with trial SDK components for .NET. Online source codes for
pdf xmp metadata editor; view pdf metadata
Algorithm 4.Decomposethecolumnsofeachmulti-lineblockobject
for each Multi-Line Block mlb {
for each Line line in mlb {
for each Text t in line {
find appropriate column for t;
if (found)
add t to cells in column;
else {
create new column;
add column at the appropriate position in the column list;
}
}
}
create table with all these columns;
}
Findingthe appropriate column for a text object requires a heuristic itself, which is
described by Algorithm 5.
Algorithm 5.Assigntextelementtoacolumn
input: Text t
for each column c {
if (t overlaps c or c overlaps t)
return c;
else
if (t in c or c in t)
return c;
else
return null;
}
After all these processes we have a list of columns which together compose the
tables. Now, the only thing todois tomergecells withthesame content to one cellwith
agreater spanningvalue.
3.4 An Example
In the followingwe will give an example to illustrate several steps of our approach.
Assume that we have as inputthe PDF file with a page like in Fig. 2. Of course, the
PDF file contains not only the table but also text paragraphs, footnotes, etc., too.
After getting the results from thepdftohtmltool we can go on with our approach.
Our first step is to sort all the text elements in respect to the ir top attributes. Assume
that we have already identified the text elements before the t able and let us begin with
the text elements in the table (refer Fig. 3).
In Fig. 3, after the sorting process we have the following ordering:
”Medianvalue amongfamilies”, ”Familieshavingstockhold
ings”, ”withholdings”,
”direct or indirect”, ”Family”, ”(thousands of 1998 dollar
s)”, ”characteristic”, ”1989”,
”1992”, ”1995”, ”1998”, ”1989”, and so on.
Fig.2.ExampleofacomplextableinaPDFfile
Now, Algorithm 1 is applied to create the line objects. Based on the ordering the
first text element that is saved in a line object is ”Median val ue among families”. Thus,
anew line object is created and the top and bottom values are actualized in respect to
the added text element. The next one is ”Families having stoc k holdings”and we must
look whether we can put this text in an existing line object or not. The first dashed line
(see Fig. 3) marks the bottom of the line object we just created. As you can see the
currenttext elements' top value is between the topand the bottom value of our firstline
objectand thus can be added tothis line. After adding, the line objects' top and bottom
values are actualized. This procedure is applied until all text objects have been found
in a line object (the last text object in our example is ”1989” ” ). The text elements in
this line object are still sorted according to their top values. This ordering is of no use
anymore, because we want to gain the text chunks that semantically belong together.
For example, we want ”Family”and ”characteristic”merged.
Thus, we next sort the
text elements in the line object according to their left values. After that we have the
wanted ordering, thus ”Family characteristic”, ”Families
having stock holdings direct
or indirect”, and so on (refer Fig. 3).
Fig.3.Illustratingtheorderinginwhichthetextelementsareaddedintolineobjects
After building all line objects in this page we have to classify all line objects as
single-line object or multi-line object. Algorithm 2 marks successive multi-line objects
as multi-line block objects. Because we have no other multi-line block object in this
example we do not have to merge anything (refer Algorithm 3).
Thenextstep is to create columns andassign the text objects totheir corresponding
columns. This step is done by Algorithm 4 and Algorithm 5. For our first text object in
the firstline object (”Family characteristic”) we have to bu
ild a newcolumn. For allthe
text objects in the line objects we have to look whether there exists a column to which
that text object can be assigned. If so, we simply add the text object to this column. If
not, we create a new column and add this text object to the new one. In both cases, we
actualize the columns' horizontal boundaries according to the newaddedtextelement.
Atext object can be assigned to a column if one of the following four possibilities
appears (refer Fig. 4):
1. The text is positioned completely within the horizontalboundaries of the column
2. Left border of the text is positioned in the horizontal column boundaries
3. Right border of the text is positioned in the horizontalboundaries of the column
4. The text spans the horizontal boundaries of the column
After this procedure we have a table consisting of more than one column. For the
first five columns of our example in Fig. 2 we get the resulting c olumns presented in
Table. 1.
Finally, we have to identify neighbor cells with the same content and merge them.
In our case the four cells with the content ”Families having s tock holding direct or
indirect”are mergedinto one single cell witha column spann ingof four. These are the
main steps of our approach toextract table information from PDF files.
3.5 Limitations
Because of the complexity of the task and the used heuristics, which cannot cover all
possible table structures, one cannot assume that the approach always returns correct
results. For example,our approachcannotdistinguishbetweenhiddentables (i.e., tables
that are not labeled as such in the original file) and real tabl es. Further, tables that
Fig.4.Thefourpossibilitiesforassigningatextobjecttoacolumn
Table 1.ColumnsafterapplyingAlgorithm4.
Family
Families
Families
Families
Families
characteristic
having
having
having
having
stock
stock
stock
stock
holding
holding
holding
holding
direct or
direct or
direct or
direct or
indirect
indirect
indirect
indirect
Null
1989
1992
1995
1998
All Families
31.6
36.7
40.4
48.8
...
...
are positioned vertically on a page cannot be captured. There are also several possible
errors, for example, textchunksthatdonot belongtogether are merged,multi-lineblock
objects that belong together are not merged, data cells are assigned to wrong columns,
and so forth. It is also possible that areas that are not tables are identified as such. This
is the case, for example, with bulleted lists, etc.
Toovercometheselimitations we alsoimplementeda graphicaluser interfacewhich
gives the user the ability of making adjustments on the extracted data. The user can
make adjustments on cell level (e.g. delete cells, merge cells, edit content of cell, etc.)
or on table level(e.g. delete table, merge tables, delete/insert rows or columns).
Themain limitation of the tool is that it is based onthe results of thepdftohtmltool.
If this tool returns wronginformation or no information at all, our approach cannot be
applied. For example, PDF files sometimes contain only the im age of a table and not
text chunks which are inserted by an author. In such a case, thepdftohtmlreturns no
useful information. We stated this limitation as the main limitation, because the user
cannotdo anything aboutit. The graphicaluser interface will not help, either.
3.6 Evaluation
Theevaluationof anInformationExtractionSystem is a non-trivialissue. Therefore,we
cansay that the MUCs' scoring program representedan important first step in the right
direction [6]. These conferences served as an evaluation platform where systems from
different sites were evaluated by using different measures. Over the years the recall
and precision measures established themselves and are widely accepted as a means for
givingevidenceabout a system's performance. Currently, some research goes in the di-
rection of finding new and proper measures for evaluatingtab le-processing approaches
[7].
However, it is hard to predict how good a measure reflects the r eal situation for a
current approach. Our approach, for example, consists of several iterative steps and a
failure in the first step would affect the end result to an unpr edictable extent. But it
would be very hard to evaluate the performance of each heuristic separately. Thus, we
decidedtoevaluate the endresult using the mentionedmost established measures inthe
IE community, namelythe recall and precision measures [2].
We evaluated the table recognition and decomposition task separately and trans-
formedthe formula for recall and precisionaccordingto the tasks. The formula for the
table recognition task is as follows:
Recall
=
number of correctly identified tables
number of tables in the document
Precision
=
number of correctly identifiedtables
number of identifiedtables
The formula for recall and precision for the table recognitiontask is as follows:
Recall
=
number of correctly assigned data cells
number of data cells in the original table
Precision
=
number of correctly assigneddata cells
number of extracted data cells
To determine how well our approach performs on the task of table recognition and
decomposition we implemented our approach and evaluated it with several PDF files
containing various tables. For that purpose, we used two test corpora. One consists of
documents with lucid (or unsophisticated) tables and the other consists of documents
with complex tables. The documents do not only contain tables, but also text para-
graphs, graphics, etc.
Differentapplicationfields are usingdifferentkindsof ta bles. Butwithina particular
field the structure of the tables are quite similar. If we woul d test our approach onsuch
adata set, the evaluation results wouldnotreflectthe realp erformanceof our approach.
Toovercome this problem, we decided togenerateour test corpora randomly withPDF
files available on the World Wide Web. Most of the PDF files cont ain only one table
and they came from various fields like research, sports, stat istics, etc. They are also not
restrictedto be from a specific domain or language.
Tables 2 and 3 showthe evaluation results of our approach for the table recognition
and table decomposition tasks.
Documents you may be interested
Documents you may be interested