我有成千上万个仅由表格组成的PDF文件,其结构如下:
但是,尽管结构合理,但我不能在不丢失结构的情况下读取表。
我尝试了PyPDF2,但是数据完全混乱了。
import PyPDF2
pdfFileObj = open(pdf_file.pdf, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj = pdfReader.getPage(0)
print(pageObj.extractText())
print(pageObj.extractText().split('\n')[0])
print(pageObj.extractText().split('/')[0])
我也尝试过Tabula,但它只读取标题(而不读取表的内容)
from tabula import read_pdf
pdfFile1 = read_pdf(pdf_file.pdf, output_format = 'json') #Option 1: reads all the headers
pdfFile2 = read_pdf(pdf_file.pdf, multiple_tables = True) #Option 2: reads only the first header and few lines of content
有什么想法吗?
答案 0 :(得分:0)
尝试一下:pip install tabula-py
from tabula import read_pdf
df = read_pdf("file_name.pdf")
答案 1 :(得分:0)
经过一番挣扎之后,我找到了一种方法。
对于文件的每一页,有必要在表格的read_pdf函数中定义表的区域和列的限制。
这是工作代码
import PyPDF2
from tabula import read_pdf
# Get the number of pages in the file
pdfFileObj = open(pdf_file, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
n_pages = pdfReader.getNumPages()
# For each page the table can be read with the following code
table_pdf = read_pdf(pdf_file, guess=False, pages = 1, stream=True , encoding="utf-8", area = (96,24,558,750), columns = (24,127,220,274,298,325,343,364,459,545,591,748))