gpt4 book ai didi

node.js - 如何从nodejs中的pdf文件中提取数据

转载 作者:行者123 更新时间:2023-12-01 04:34:42 71 4
gpt4 key购买 nike

我已经用过 'pdf.js-extract' npm 模块从 pdf 中获取数据。

var PDFExtract = require('pdf.js-extract').PDFExtract;

var pdfExtract = new PDFExtract();
var filename="/home/aman/Downloads/sample_invoice.pdf"

pdfExtract.extract(filename , function (err, data) {
if (err) return console.log(err);
console.log(JSON.stringify(data));
});

但我没有得到想要的结果。
我想从发票 pdf 中获取相关信息,例如税款、支付的总金额、卖家地址,并将获取的数据保存到 mongodb 集合中

最佳答案

您必须按发票格式编写函数(fn company1、fn company2...)。

这是一个示例,其中包含三个不同的函数来检索 pdf.js-extract 的导出中的数据。模块:

// Sample invoice
let sampleInvoice =
{
"pages":
[
{
"content":
[
{
"x": 348.41,
"y": 125.59899999999993,
"str": "Invoice Number",
"dir": "ltr",
"width": 61.61760000000001,
"height": 8.8,
"fontName": "g_d0_f2"
},
{
"x": 451.935,
"y": 125.59899999999993,
"str": "INV-3337",
"dir": "ltr",
"width": 37.171200000000006,
"height": 8.8,
"fontName": "g_d0_f2"
}
]
}
]
};


// Create alerts for test functions in browser
alert(searchByPosition(sampleInvoice.pages, 450, 125));
alert(searchByPrev(sampleInvoice.pages, 'Invoice Number'));
alert(searchByFormat(sampleInvoice.pages, /INV-\d+$/));


function searchByPosition(pages,x,y)
{
// Set position range (difference max)
let range = 10;

// Init x and y positions
x = Math.floor(x/range), y = Math.floor(y/range);

// Loop in all pages
for(let i = 0; i < pages.length; i++)

// Loop in all content
for(let j = 0; j < pages[i].content.length; j++)

// Test position x and y and if match return content
if(Math.floor(pages[i].content[j].x/range) == x && Math.floor(pages[i].content[j].y/range) == y)

// Return result
return pages[i].content[j].str;

// No results found
return 'NotFound';
}


function searchByPrev(pages,txt)
{
// Init txt
txt = txt.toLowerCase();

// Loop in all pages
for(let i = 0; i < pages.length; i++)

// Loop in all content
for(let j = 0; j < pages[i].content.length; j++)

// Test text and if match return next content
// (If you write j-1, you can have searchByNext function)
if(pages[i].content[j].str.toLowerCase() == txt && pages[i].content[j+1])

// Return result
return pages[i].content[j+1].str;

// No results found
return 'NotFound';
}


function searchByFormat(pages,regex)
{
// Loop in all pages
for(let i = 0; i < pages.length; i++)

// Loop in all content
for(let j = 0; j < pages[i].content.length; j++)

// Test regex and if match return content
if(regex.test(pages[i].content[j].str))

// Return result
return pages[i].content[j].str;

// No results found
return 'NotFound';
}

在这里尝试:https://jsfiddle.net/dkhqzg6s/

关于node.js - 如何从nodejs中的pdf文件中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51961926/

71 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com