如何从文档文本中找到相关字段?

时间:2018-09-14 06:03:39

标签: java nlp text-processing

我已经从pdf票据中提取了文本,看起来像这样(票据可能有所不同)

___________________________________________________
|invoiceNo  | itemId |  item_name  |   qty | amount |
|___________|________|_____________|_______|________|
|12323133   |  1     |  Hp laptops |    1  |  180000|
|1234534H   |  1     |  Hp laptops |    1  |  180000|
|SW323133   |  1     |  Hp laptops |    1  |  180000|
|FGF323133  |  1     |  Hp laptops |    1  |  180000|
|___________|________|_____________|_______|________|

现在,我需要一种算法来查找所有相关信息,例如发票编号/ item_name等。文本可以短于或长于2-3页

2 个答案:

答案 0 :(得分:1)

好像空格是分隔符,例如“;”在.csv中,因此您可以使用String.split(Pattern.quote(“”)))创建一个数组。然后在第5个元素之后跳到下一行。

尝试类似的事情:

File f = new File("example.pdf");
        BufferedReader br = new BufferedReader(new FileReader(f));
        ArrayList<String> Data = new ArrayList<String>();
        while((line = br.readLine()) != null) {
            String[] a = line.split(Pattern.quote(" "));
            for(int i = 0; i < a.length; i++) {
                if(!(a[i] == null || a[i] == "")) {
                    Data.add(a[i]);
                }
            }
        }

答案 1 :(得分:0)

有些值可能包含空格的事实在这里是一个问题,因为这些值由空格分隔。如果您控制提取此信息的程序,则建议您尝试转义其输出中的值,例如“ Hp laptops”。以这种方式格式化输入后,普通的csv解析方法应允许您提取映射到标头的信息。这个lib可能会帮助您:

https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVParser.html