如何在Python中将提取的文本从PDF转换为JSON或XML格式?

时间:2018-10-06 03:52:32

标签: python json xml pypdf2

我正在使用PyPDF2从PDF文件中提取数据,然后转换为文本格式吗?

文件的PDF格式如下:

Name : John 
Address: 123street , USA 
Phone No:  123456
Gender: Male 

Name : Jim 
Address:  456street , USA 
Phone No:  456899
Gender: Male 

在Python中,我正在使用以下代码:

import PyPDF2
pdf_file = open('C:\\Users\\Desktop\\Sampletest.pdf', 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
page_content

这是我从page_content得到的结果:

 'Name : John \n \nAddress: 123street , USA \n \nPhone No:  123456\n \nGender: Male \n \n \nName : Jim \n \nAddress:  456street , USA \n \nPhone No:  456899\n \nGender: Male \n \n \n'

如何将其格式化为JSON或XML格式,以便可以在SQL Server数据库中使用提取的数据。

我也尝试过使用这种方法

import json
data = json.dumps(page_content)
formatj = json.loads(data)
print (formatj)

输出:

Name : John 
Address: 123street , USA 
Phone No:  123456
Gender: Male 

Name : Jim 
Address:  456street , USA 
Phone No:  456899
Gender: Male 

这与我的word文件中的输出相同,但是我认为这不是JSON格式。

1 个答案:

答案 0 :(得分:0)

不是很漂亮,但是我认为这可以完成工作。您将得到一个字典,然后由json解析器以一种漂亮的漂亮格式将其打印出来。

one_hot_vec <- function(x) {
    nc <- max(x)
    nr <- length(x)
    m <- integer(nr * nc)
    i <- (seq_len(nr) - 1) * nc + x
    m[i] <- 1L
    matrix(m, nrow = nr, ncol = nc, byrow = TRUE)
}

或者,而不是最后三行,只需执行以下操作:

import json    

def get_data(page_content):
    _dict = {}
    page_content_list = page_content.splitlines()
    for line in page_content_list:
        if ':' not in line:
            continue
        key, value = line.split(':')
        _dict[key.strip()] = value.strip()
    return _dict

page_data = get_data(page_content)
json_data = json.dumps(page_data, indent=4)
print(json_data)