вставка данных распознавания pdf из файла в базу данных

#java #oracle #ocr

#java #Oracle #распознавание

Вопрос:

Я выполнил распознавание PDF-файла с использованием библиотеки с открытым исходным кодом pdfbox, в настоящее время его данные записываются в текстовый файл, но я хочу поместить все данные в таблицу базы данных

 public class Pdfocr {

    private static final String DB_CONNECTION = "jdbc:oracle:thin:@host:port:db";
    private static final String DB_USER = "user";
    private static final String DB_PASSWORD = "pwd";

    public static void main(String[] args) {
        PDDocument pd;
        BufferedWriter wr;

        try {
            Connection dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);
            System.out.println("Connection");
            Statement statement = dbConnection.createStatement();

            //statement.execute("INSERT INTO xx_lockbox_receipts(BATCH, TRX, CHECK_DATE, LOCKBOX_NO, ACCT_NO, CHECK_NO, AMOUNT) VALUES (1,1,SYSDATE,123,123,321,10)");

            File input = new File("C:/ocr/MTBC lockbox deposits Feb 01, 2019 ($5,185.85).pdf");
            File output = new File("C:/ocr/SampleText.txt");
            pd = PDDocument.load(input);
            int i = pd.getNumberOfPages();

            PDFTextStripper stripper = new PDFTextStripper();
            stripper.setStartPage(1);
            stripper.setEndPage(i);
            wr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output)));
            stripper.writeText(pd, wr);
            if (pd != null) {
                pd.close();
            }
            wr.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  

Оператор SQL INSERT упоминается в комментарии к приведенному выше коду; пример вывода из извлеченного текстового файла приведен ниже:

 Batch: 1, Tran: 1, Date: 20190201, Amount: 73.88, Lockbox#: 83495, Acc#: 1200653200, Check#: 1242
Batch: 1, Tran: 1, Date: 20190201, Amount: 0.00, Lockbox#: 83495, Acc#: -
Batch: 1, Tran: 2, Date: 20190201, Amount: 3440.91, Lockbox#: 83495, Acc#: 5020607192, Check#: 23322
Batch: 1, Tran: 2, Date: 20190201, Amount: 0.00, Lockbox#: 83495, Acc#: -
Batch: 1, Tran: 2, Date: 20190201, Amount: 0.00, Lockbox#: 83495, Acc#: -
Batch: 1, Tran: 2, Date: 20190201, Amount: 0.00, Lockbox#: 83495, Acc#: -
Batch: 1, Tran: 3, Date: 20190201, Amount: 1671.06, Lockbox#: 83495, Acc#: 3601085602, Check#: 8723
Batch: 1, Tran: 3, Date: 20190201, Amount: 0.00, Lockbox#: 83495, Acc#: -
Batch: 1, Tran: 3, Date: 20190201, Amount: 0.00, Lockbox#: 83495, Acc#: -
Batch: 1, Tran: 3, Date: 20190201, Amount: 0.00, Lockbox#: 83495, Acc#: -
  

Комментарии:

1. Очень неясно, о чем вы спрашиваете… Вы хотите знать, как разделить текстовую строку на элементы?

2. Я хочу разделить эту строку и вставить в таблицу базы данных

3. Тогда было бы лучше создать новый вопрос, который фокусируется на основной проблеме. Ваш вопрос выглядит как проблема с базой данных / распознаванием текста, но это не так, чтобы люди, которые хорошо разбираются в синтаксическом анализе строк, проигнорировали его. Решением было бы вызывать String.split(",") для каждой строки вашего декодированного текста (вам также нужно разделить ваш текст на строки); затем найдите в каждой строке «:» и обрежьте там. (Но есть много других решений)

4. @TilmanHausherr спасибо за предложение, я просто хочу знать, как я могу преобразовать BufferedWriter в строку, чтобы я мог разделить на , и вставить его в БД

5. Я думаю, вы имеете в виду BufferedReader и StringReader для получения строк. (Но вы также могли бы использовать split("n") , хотя это займет больший объем памяти).