#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")
, хотя это займет больший объем памяти).