'Tabula-py for borderless table extraction

Can anyone please suggest me how to extract tabular data from a PDF using python/java program for the below borderless table present in a pdf file?

enter image description here



Solution 1:[1]

This table might be difficult one for tabla. How about using guess=False, stream=True ?

Update: As of tabula-py 1.0.3, guess and stream should work together. No need to set guess=False to use stream or lattice option.

Solution 2:[2]

I solved this problem via tabula-py

conda install tabula-py

and

>>> import tabula
>>> area = [70, 30, 750, 570] # Seems to have to be done manually
>>> page2 = tabula.read_pdf("nar_2021_editorial-2.pdf", guess=False, lattice=False, 
                 stream=True, multiple_tables=False, area=area, pages="all",
                   ) # `tabula` doc explains params very well
>>> page2

and I got this result

> 'pages' argument isn't specified.Will extract only from page 1 by default. [      
> ShortTitle                                              Text  \  0    
> Arena3Dweb         3D visualisation of multilayered networks     1    
> Aviator       Monitoring the availability of web services     2       
> b2bTools  Predictions for protein biophysical features and     3      
> NaN                                their conservation     4         
> BENZ WS          Four-level Enzyme Commission (EC) number     ..      
> ...                                               ...     68 
> miRTargetLink2              miRNA target gene and target pathway    
> 69             NaN                                          networks  
> 70       mmCSM-PPI            Effects of multiple point mutations on  
> 71             NaN                      protein-protein interactions  
> 72        ModFOLD8           Quality estimates for 3D protein models  
> 
>  
>                                                 URL    0                    http://bib.fleming.gr/Arena3D    1         
> https://www.ccb.uni-saarland.de/aviator    2                   
> https://bio2byte.be/b2btools/    3                                    
> NaN    4                 https://benzdb.biocomp.unibo.it/    ..       
> ...    68  https://www.ccb.uni-saarland.de/mirtargetlink2    69       
> NaN    70          http://biosig.unimelb.edu.au/mmcsm ppi    71       
> NaN    72       https://www.reading.ac.uk/bioinf/ModFOLD/      [73
> rows x 3 columns]]

This is an iterable obj, so you can manipulate it via for row in page2:

Hope it help you

Solution 3:[3]

Tabula-py borderless table extraction:

Tabula-py has stream which on True detects table based on gaping.

from tabula convert_into
src_pdf = r"src_path"
des_csv = r"des_path"
convert_into(src_pdf, des_csv, guess=False, lattice=False, stream=True, pages="all")

     

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2
Solution 3