【问题标题】:Extracting Specific Values to TXT from PDF using a Javascript Sequence使用 Javascript 序列从 PDF 中提取特定值到 TXT
【发布时间】:2019-09-26 02:46:24
【问题描述】:

我找不到合适的 JavaScript 解决方案来在 Adob​​e Acrobat 中创建将文本提取到 .txt 文件中的序列;基于某些标准。

我有 500 多份包含图片和财务数据的 pdf。我需要从这些页面中提取特定值。包括:支票号码、支票日期、支票金额等值。

我尝试了以下示例: https://www.evermap.com/javascript.asp#Title:%20Extract%20ISBN%20numbers

我什至用 ISBN 编号创建了一个 PDF,但它不起作用。

在我的 PDF 中,我有以下数据:

生产日期:2019/01/04

帐号:69447885236

CheckAmt:157.52

序列号:8574

MflmSeqNum: 268245062738

生产日期:2019/01/14

帐号:69447885236

CheckAmt:2,415.36

序列号:8570

MflmSeqNum:268545187745

我需要以分隔格式将值提取到文本文件(或 Excel 表)中。预期输出如下:

2019 年 1 月 14 日; 2,415.36; 8570

2019/01/04; 157.52; 8574

【问题讨论】:

    标签: javascript ocr acrobat pdf.js


    【解决方案1】:

    好的,所以通过一些调整并让循环继续执行,我能够获得所需的输出,唯一的问题是它正在重复数据并且它们没有保持相关性:

    以下是循环信息:

        for (var i = 0; i < this.numPages; i++)
        {
            numWords = this.getPageNumWords(i);
            var PageText = "";
            for (var j = 0; j < numWords; j++) {
                var word = this.getPageNthWord(i,j,false);
                PageText += word;
                }
    
            var strMatches = PageText.match(reMatch);
            if (strMatches == null) continue;
    
        for (var o = 0; o < this.numPages; o++)
        {
            numWordsAmt = this.getPageNumWords(o);
            var PageTextAmt = "";
            for (var k = 0; k < numWordsAmt; k++) {
                var wordAmt = this.getPageNthWord(o,k,false);
                PageTextAmt += wordAmt;
                }
    
            var strMatchesAmt = PageTextAmt.match(reMatchAmt);
            if (strMatches == null) continue;
    
        for (var p = 0; p < this.numPages; p++)
        {
            numWordsNum = this.getPageNumWords(p);
            var PageTextNum = "";
            for (var l = 0; l < numWordsNum; l++) {
                var wordNum = this.getPageNthWord(p,l,false);
                PageTextNum += wordNum;
                }
    
            var strMatchesNum = PageTextNum.match(reMatchNum);
            if (strMatchesAmt == null) continue;
    
            // now output matches into report document
            for (j = 0; j < strMatches.length; j++) {
                    for (k = 0; k < strMatchesAmt.length; k++) {
                        for (l = 0; l < strMatchesNum.length; l++) {
                Out[strMatches[j].replace("ProcDate: ", "")+" , "+strMatchesAmt[k].replace("CheckAmt: ", "")+" , "+strMatchesNum[l].replace("SerialNum: ", "")] = true; // store email as a property name
                    }
                }
            }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 1970-01-01
      • 2016-01-22
      • 2020-03-30
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 2020-12-22
      相关资源
      最近更新 更多