Поиск слова в PDF

#robotframework

#robotframework

Вопрос:

Я хотел бы найти какое-нибудь слово после конвертации PDF.

1) У меня есть 2 PDF в path C:TRMPDF 1.pdf и 2.pdf

  • 1. в pdf есть слово «ICG00058»
  • 2. в pdf есть слово «ICG00065»

2) Уже конвертируйте Pdf в Txt по цене ${detail_1}.

3) Предположим, я не знаю слово в 1.pdf, и я хочу проверить, имеет ли 1.pdf значение ICG00058 или ICG00065.

Мне очень жаль, если вопрос не ясен. Пожалуйста, изучите эту проблему для меня, потому что это чрезвычайно важно для моей работы.

 *** Settings ***
Library         Selenium2Library
Library         String
Library         Pdf2TextLibrary


*** Test Cases ***
Read PDF

    ${detail_1}     Convert Pdf To Txt              C:\TRM\PDF\1.pdf
    LOG     ${detail_1} 
    ${ID_1}     Get Regexp Matches        ${detail_1}          ICG00058
    ${ID_2}     Get Regexp Matches        ${detail_1}          ICG00065
 Run Keyword And Ignore Error          $ID_1[0] in $detail_1      LOG   ${ID_1}
 Run Keyword If                        $ID_2[0] in $detail_1      LOG   ${ID_2}  

ОШИБКА:
Ошибка вычисления выражения ‘RF_VAR_ID_2 [0]в RF_VAR_detail_2’: ошибка индекса: индекс списка находится вне диапазона

Ответ №1:

Я использовал pdfgrep точно так же, как grep вы можете искать regex выражения в PDF без какого-либо промежуточного шага.

Я использовал его для поиска номеров ISBN в PDF-файлах и автоматического переименования имени файла для включения найденных ISBN-адресов или записи имени файла и ISBN в базу данных MySQL.

Если вы не знаете, как писать, regex есть несколько онлайн-инструментов для тестирования regex в режиме онлайн, пока вы не найдете подходящий для использования.

Ответ №2:

Вам нужно вызвать ключевое слово Evaluate, если вы хотите запустить python в вашем скрипте робота, вот почему вы видите ошибку, о которой вы упомянули.

В вашем случае, хотя вы могли бы использовать Получить индекс из списка, а список должен содержать ключевые слова Value:

 ${matched_id_1}=    Get Index From List     ${ID_1}     0
Run Keyword And Ignore Error    List Should Contain Value    ${detail_1}    ${matched_id_1}

${matched_id_2}=    Get Index From List     ${ID_2}     0
Run Keyword And Ignore Error    List Should Contain Value    ${detail_1}    ${matched_id_2}
  

Если вы хотите использовать List Should Contain Value ключевые слова в качестве утверждений, просто удалите ключевое слово Run и проигнорируйте ключевые слова Error в ответе

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

1. После того, как я использую ключевое слово, получаю индекс из списка $ {ID_1} 0. Я сталкивался с подобным $ {matched_id_1} = -1 в журнале. Ожидаемый должен быть ICG00058.

2. Если вы получаете результат из regexp, вторая часть, вероятно, не нужна, поскольку вы просто проверяете, что значение, которое вы уже извлекли из своего файла, находится в вашем файле. Добавьте полученный результат в ${ID_1} и ${ID_2} в свой вопрос