पीडीएफ दस्तावेजों से पाठ निकालें और संरचित डेटा उत्पन्न करें

वोट
0

मैं पीडीएफ के सभी पृष्ठों से पाठ को सफलतापूर्वक निकालने में सक्षम हूं। लेकिन संरचित डेटा में उत्पन्न करने में असमर्थ है। मुझे पता है अगर किसी को भी इस तरह की विशेषज्ञता आती है।

कोड:

package pdfboxreadfromfile;
import java.awt.geom.Rectangle2D;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.pdfbox.text.PDFTextStripperByArea;

public class PDFBoxReadFromFile {
  public static void main(String[] args) {
    try {
      File file = new File(C:/ma.pdf);
      PDDocument doc = PDDocument.load(file);
      PDFTextStripper pdfTextStripper = new PDFTextStripper();
      pdfTextStripper.setSortByPosition(true);
      pdfTextStripper.setStartPage(1);
      pdfTextStripper.setEndPage(6);
      String text = pdfTextStripper.getText(doc);
      System.out.println(text);
      doc.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
उत्पादन:

यहाँ

पीडीएफ इस तरह दिखता है। पृष्ठ 1: यहाँ

प्रत्याशित हेडर टेक्स्ट केवल संदर्भ के लिए है और नोटिन प्रिंट की आवश्यकता है। यहाँ

पीछा किया।

Pattern p = Pattern.compile(PO...........*?);
Pattern p1 = Pattern.compile(Vendor...........);
Pattern p2 = Pattern.compile(100.....*?);
Pattern p4 = Pattern.compile(Date...............................................*?);
Pattern p5 = Pattern.compile(62...........3*?);
Pattern p6 = Pattern.compile(62710149950...*?);
Pattern p7 = Pattern.compile(627101499504..*?);

Matcher m = p.matcher(text);
Matcher m1 = p1.matcher(text);
Matcher m2 = p2.matcher(text);
Matcher m4 = p4.matcher(text);
Matcher m5 = p5.matcher(text);
Matcher m6 = p6.matcher(text);
Matcher m7 = p7.matcher(text);
m.find();
m1.find();
m2.find();
m4.find();
m5.find();
m6.find();
m7.find();

System.out.println(m.group(0) + | + m1.group(0) + | + m2.group(0) + | + m2.group(0) + | + MAC + | + m4.group(0) + | + m5.group(0) + |);
System.out.println(m.group(0) + | + m1.group(0) + | + m2.group(0) + | + m2.group(0) + | + MAC + | + m4.group(0) + | + m6.group(0) + |);
System.out.println(m.group(0) + | + m1.group(0) + | + m2.group(0) + | + m2.group(0) + | + MAC + | + m4.group(0) + | + m7.group(0) + |);

संरचित आउटपुट। लेकिन मुद्दा बारकोड उर्फ उत्पाद कोड के खिलाफ मात्रा नहीं आ रहा है। यहाँ

29/05/2020 को 19:35
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

आपको हेडर लाइन (बारकोड, आइटम नंबर, ...) के लिए पाठ को खोजना चाहिए और फिर प्रत्येक पंक्ति को स्तंभों में विभाजित करके पार्स करना चाहिए। कॉलम रिक्त स्थान से अलग हो जाते हैं, इसलिए आप String.split () फ़ंक्शन का उपयोग कर सकते हैं।

01/06/2020 को 15:58
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more