проблема с регулярными выражениями при разборе pdf-файла с помощью CAM :: PDF

#perl #pdf

#perl #PDF

Вопрос:

Непревзойденный [ в регулярном выражении; отмечен <— ЗДЕСЬ в m / <— ЗДЕСЬ / at ./pdf_parse.pl строка 37.

На самом деле я разбираю файл .pdf слово за словом [чтобы составить из него словарь] строка 37:-

 if(grep(!/$word/,@line_rd)){
}
  

Ну, на самом деле word, в котором скрипт синтаксического анализа перестает работать, написан другим шрифтом [в стороне от pdf, который я анализирую], это виновник здесь?
Распознает ли CAM:: PDF слова, написанные разными шрифтами? Что мне следует предпринять, чтобы остановить это!

Ответ №1:

Вам нужно заключить в кавычки $word в регулярном выражении, если оно может содержать специальные символы (например, [ или даже . ). Попробуйте с:

 if (grep(!/Q$wordE/, @line_rd)) {
  ...
}
  

Если вы хотите создать словарь из всех слов, используйте хэш:

 my %allwords;
...
  # each time you have a new word incoming from the parser:
  $allwords{$word}  ;
  

В конце %allwords хэш будет содержать отдельные слова в качестве ключей, а количество слов — в качестве значений. Вы могли бы, например, распечатать его с помощью:

 map {
 print "Word $_: count: ", $allwords{$_}, "n";
} (sort keys %allwords);
  

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

1. тем не менее, слова, написанные разными шрифтами, не отображаются properly…it отображается как «^ @ W ^ @ ^@ S ^ @ H ^ @ G» !

2. Нужно ли мне использовать какой-либо стиль кодировки или мне нужно преобразовать все слова в обычный текст?

3. вам нужно будет опубликовать немного больше кода, чтобы показать, как вы получаете, $word и @line_rd это ни на что не похоже.

4. В конечном итоге CAM:: PDF извлек не все PDF-файлы contents…it может извлекать только обычный текст [я не говорю об изображениях и т.д., Однако не обычный текст, такой как обычно код c или переменные пути, такие как /bin / perl …. которые обычно имеют шрифт, отличный от обычного текста].

5. @mandy: шрифты и кодировка — это две совершенно разные вещи. если части вашего PDF-файла каким-либо образом закодированы, то эти части необходимо соответствующим образом декодировать, прежде чем вы сможете использовать их в регулярных выражениях. CAM :: PDF имеет множество функций синтаксического анализа, поэтому, не зная, что именно вы делаете и что содержат ваши PDF-файлы, вам довольно сложно помочь.