Извлечение определенных значений в TXT из PDF с использованием последовательности Javascript - PullRequest
0 голосов
/ 26 сентября 2019

Я не могу найти подходящее решение javascript для создания последовательности в Adobe Acrobat, которая будет извлекать текст в файл .txt;на основе определенных критериев.

У меня есть более 500 PDF-файлов с изображениями и финансовыми данными на них.Мне нужно извлечь конкретные значения из этих страниц.Включая значения, такие как: номер чека, дата проверки, сумма чека.

Я попробовал пример по адресу: https://www.evermap.com/javascript.asp#Title:%20Extract%20ISBN%20numbers

Я даже создал PDF с номерами ISBN, и он не работает.

В моем PDF-файле у меня есть следующие данные:

ProcDate: 2019/01/04

AccountNum: 69447885236

CheckAmt: 157,52

SerialNum: 8574

MflmSeqNum: 268245062738

ProcDate: 2019/01/14

AccountNum: 69447885236

CheckAmt: 2,415.36

1027* SerialNum: 8570

MflmSeqNum: 268545187745

Мне нужно извлечь значения в текстовый файл (или таблицу Excel) в формате с разделителями.Ожидаемый результат ниже:

2019/01/14;2,415.36;8570

2019/01/04;157,52;8574

1 Ответ

0 голосов
/ 27 сентября 2019

Хорошо, так что с небольшой настройкой и получением циклов, я смог получить желаемый результат, единственная проблема в том, что он повторял данные, и они не оставались коррелированными:

Ниже находится циклинформация:

    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
                }
            }
        }
        }
    }
}
...