Почему парсер PDF-документов не может обрабатывать несколько тегов одновременно?

Здравствуйте! <br/> <br/> Мне нужно регулярно проверять наличие определенных слов с тегами в двух документах для работы. Для этого я разработал парсер, который ищет слова с тегами и сравнивает их между двумя документами, выдавая списком уникальные слова для каждого документа. <br/> <br/> Парсер работает хорошо с одним тегом, но если я пытаюсь использовать несколько тегов, он не выдаёт никаких результатов. <br/> <br/> Вот пример работы с одним тегом (тег=UPS): <br/> Уникальные слова в первом PDF файле: <br/> SNR-UPS-ONRT-100 (страница 5) <br/> SNR-UPS-ONRT-100 (страница 6) <br/> SNR-UPS-ONRT-100 (страница 7) <br/> SNR-UPS-ONRT-100 (страница 8) <br/> SNR-UPS-ONRT-100 (страница 9) <br/> SNR-UPS-ONRT-200 (страница 4) <br/> SNR-UPS-RK-CS (страница 5) <br/> SNR-UPS-RK-CS (страница 6) <br/> SNR-UPS-RK-CS (страница 7) <br/> SNR-UPS-RK-CS (страница 9) <br/> <br/> Уникальные слова во втором PDF файле: <br/> 1.UPS1.10 (страница 16) <br/> 1.UPS1.2 (страница 16) <br/> 2.UPS1.2 (страница 16) <br/> 3.UPS1.2 (страница 16) <br/> 4.UPS1.2 (страница 16) <br/> 5.UPS1.2 (страница 16) <br/> SNR-UPS-ONRT-1000-S24 (страница 11) <br/> SNR-UPS-ONRT-1000-S24 (страница 12) <br/> SNR-UPS-ONRT-1000-S24 (страница 13) <br/> SNR-UPS-ONRT-1000-S24 (страница 14) <br/> SNR-UPS-ONRT-1000-S24 (страница 15) <br/> SNR-UPS-ONRT-1000-S24 (страница 16) <br/> SNR-UPS-ONRT-1000-S24 (страница 16) <br/> SNR-UPS-ONRT-1000-S24 (страница 16) <br/> SNR-UPS-ONRT-1000-S24 (страница 16) <br/> SNR-UPS-ONRT-1000-S24 (страница 16) <br/> SNR-UPS-ONRT-1000-S24 (страница 18) <br/> SNR-UPS-ONRT-1000-S24 (страница 19) <br/> SNR-UPS-ONRT-1000-S24 (страница 20) <br/> SNR-UPS-ONRT-1000...
  • 23 ноября 2024 г. 12:33
Ответы на вопрос 2
Причины, по которым ваш парсер PDF-документов не может обрабатывать несколько тегов одновременно, могут быть разными. Ниже перечислены возможные проблемы и способы их решения:

1. **Логика поиска тегов:** Убедитесь, что ваш алгоритм корректно настроен для обработки нескольких тегов. Например, если вы используете регулярные выражения, проверьте, что они правильно составлены для поиска по всем указанным тегам. Вам может понадобиться объединить условия поиска, чтобы искать все нужные теги одновременно.

   Пример регулярного выражения для поиска нескольких тегов:
   ```python
   regex = r'(UPS|ДругойТег|ЕщеОдинТег)\S*'
   ```

2. **Проблемы с форматом данных:** PDF-файлы могут иметь разные форматы и кодировки текста, особенно если они содержат изображения или шрифты. Возможно, парсер не может корректно извлечь текст, если он не распознан как текстовый слой. Для работы с такими документами рассмотрите использование библиотек, которые поддерживают OCR (оптическое распознавание символов), таких как Tesseract.

3. **Проверка на типы тегов:** Если вы ищете теги по определённым критериям (например, начинающиеся с определённых символов), убедитесь, что ваш алгоритм не имеет логических ошибок, из-за которых он игнорирует некоторые комбинации.

4. **Отладка кода:** Для диагностики проблем добавьте отладочные сообщения, которые позволят увидеть, на каком этапе парсер перестает находить нужные слова. Это может помочь изолировать проблему.

5. **Тестовые данные:** Проверьте свою реализацию на простых тестовых данных, чтобы убедиться, что если оба тега присутствуют, они правильно фиксируются. Это поможет проверить работу вашей логики на ограниченном наборе данных.

6. **Масштабирование поиска:** Если вы ищете много тегов, возможно, стоит разбить запросы на несколько меньших, после чего объединить результаты. Это позволит избежать возможных конфликтов при обработке.

7. **Проверка на дубли:** Убедитесь, что парсер не игнорирует дублирующиеся результаты при поиске. Это может быть связано с тем, как формируются и хранятся результаты.

Если после проверки этих аспектов проблема не разрешится, пожалуйста, предоставьте код парсера, чтобы можно было более детально проанализировать его и предложить конкретные изменения.
У Вас по тексту программы: 
tag (str): Тег, по которому фильтрую.

Один тэг.
Во втором запуску происходит поиск не двух слов, а целиком одного тэга: UPS, SW

Дальше, если будете править программу, надо определиться, какие символы могут входить в тэг, а какие будут разделителями.
Похожие вопросы