PDF belgelerinden metin çıkarın ve yapılandırılmış veriler oluşturun

oy
0

PDF'deki tüm sayfalardan metni başarıyla çıkarabiliyorum. Ama yapılandırılmış veri üretemiyorum. Kimse böyle bir uzmanlık acorss gelirse bana verin.

Kod:

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();
    }
  }
çıktı:

resim

PDF buna benzer. Sayfa 1: resim

Beklenen başlık metni yalnızca referans içindir ve yazdırılması gerekmez. resim

Aşağıdaki çalıştı.

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) + |);

Yapısal Çıktı. Ancak sorun Barkod takma adına karşı Miktar Ürün kodu gelmiyor. resim

Oluştur 29/05/2020 saat 19:35
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Metinde başlık satırı (Barkod, Öğe numarası, ...) aramalı ve ardından aşağıdaki satırları sütunlara bölerek ayrıştırmalısınız. Sütunlar boşluklarla ayrılır, böylece String.split () işlevini kullanabilirsiniz.

Cevap 01/06/2020 saat 15:58
kaynak kullanıcı

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