Получение правильного количества слов в файле PDF - PullRequest
1 голос
/ 01 марта 2012

Ответ в этой теме помог мне понять, почему иногда в моем PDF-файле не удается найти слово и почему я продолжаю получать различное количество слов при использовании различных программ для подсчета слов PDF.Я решил использовать xpdf.Я преобразовал его в текст и добавил тег -layout, а затем открыл получившийся текстовый файл в Word 2003. Я отметил количество слов.Тогда я решил, к сожалению, удалить тег -layout.На этот раз, однако, количество слов отличается.

Почему этот тег повлиял на количество слов?Есть ли точный способ найти количество слов в PDF-файле? Я бы даже заплатил за такое программное обеспечение, если бы мне понадобилось столько времени, сколько дало бы мне правильное количество слов. другая тема , но я подумал, что я выясню, решит ли только что предложенное мной решение. Была другая тема, в которой рекомендовался advancedpdf.)

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Я бы хотел сказать, что нет надежного подсчета слов. Можно, например, просто сделать вашу жизнь сложнее, поместить каждого персонажа этого прекрасного ответа Stackoverflow в один текстовый объект и расположить такие объекты так, чтобы, только при визуализации, дать значимый абзац людям. Как это:

<html><body><style>
div {float: left;}
</style><div><p>S</p></div><div><p>t</p></div><div><p>a</p></div>
<div><p>c</p></div><div><p>k</p></div>
0 голосов
/ 02 октября 2013

Я бы предложил решение с открытым исходным кодом, использующее Java.Сначала вам нужно будет проанализировать pdf-файл и извлечь весь текст, используя Tika .

Затем я считаю, что вы можете добиться этого, просто отсканировав извлеченный текст и посчитав слова.

Пример кода будет выглядеть следующим образом:

 if (f.getName().endsWith(".txt")) 
        {
            in = new BufferedReader(new FileReader(f));
            StringBuilder sb = new StringBuilder();
            String s = null;
            while ((s = in.readLine()) != null) 
                sb.append(s);

            String[] tokenizedTerms = sb.toString().replaceAll("[\\W&&[^\\s]]", "").split("\\W+");   //to get individual terms

        }     

В массиве tokenizedTerms у вас будут все термины (слова) документа, и вы можете сосчитать их, вызвав tokenizedTerms.length (),Надеюсь, это было полезно.: -)

...