@troglodytes525 (A H)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pdfの検索機能について

RPAでpdfにしおりを自動作成させるため、コマンドキー等の確認をしています。
が、テキストの検索において、求める動作ができません。。。
pdfでページ内に同一の単語が何カ所あるか、を把握する方法をご存じの方がいらっしゃいましたらご教授頂きたいです。

 

【pdfファイルのイメージ】
p.1 
 テスト①
 テスト②
 テスト③

p.2
 テスト④
 

【現況の動作(手動)の状況】
Ctrl+F 検索窓が開く
テキスト「テスト」入力

F3 ①のテストが選択される
Ctrl+B しおりが入力される
Enter しおりが完成する

F3 ⇒ ②のテストを選択して欲しいが、①のテストを選択
もう一回F3 ⇒ ②のテストが選択される
Ctrl+B しおりが入力される
Enter しおりが完成する

再びF3 ⇒ ③のテストを選択して欲しいが、①のテストを選択!
もう一回F3 ⇒ ②のテストが選択される
もう一回F3 ⇒ ③のテストが選択される
Ctrl+B しおりが入力される
Enter しおりが完成する

F3 ⇒ ④のテストを選択、何故かここは求めた動作
(ページ内の最初と最後だけ認識可能?) 
 
【検討案】
(1)p.1内に「テスト」が何カ所あるか、を把握する方法があれば、F3×1回からF3×n回まで繰り返せる?
(2)上記を把握する方法が無い場合のRPAとして、
・しおりの完成後でF3を押す前にページ数を取得し
・前回のしおりの完成後とページと同じであれば、F3を押す回数を増やしていく
・ページが変わったらF3を押す回数をリセット?

0 likes

2Answer

Acrobat Pro版をお使いだと思われるので(「ツール」タブにOCRがあると思います)、
OCR機能にてテキストを取得することで、テキストから特定の文字列が何ヶ所あるかなどは調べられると思います。何らかのスクリプトを書く必要があるかも知れませんが。

当方のAcrobat Readerでは「しおり」「OCR」機能が使えないため、的確なアドバイスではなく申し訳ありません。

0Like

Comments

  1. @troglodytes525

    Questioner

    @nak435 さん、コメントありがとうございます。
    OCR機能では画像からテキスト認識ができますが、しおりの先はほぼWordから作成しているので、意味がなく。。。
    文字列のカウント機能は、含まれていませんでした。
    特定の文字列が何カ所あるか、は
    単一ページとして抽出、PDFをwordに書き出し、wordで開く、文字列を検索、ナビゲーションウィンドウに件数が表示される、
    になるかと思いますが、本末転倒ですし。。。

  2. linuxなら、次のコマンドで個数が求まります。

    cat テキストファイル | grep -io "テスト" | wc -l
    

    テキストファイルが、PDFから文字列を抽出したファイル名で、"テスト"が、数えたい文字列です。
    このコマンドをRPAから呼び出せば良いと思います。

    MS-Wordでしたら、次のマクロでカウントできます。

    Sub 単語の出現回数を数えてみる()
      Dim count As Long, 数えたい文字列 As String
    
      数えたい文字列 = "テスト"
      count = 単語の出現回数を数える関数(数えたい文字列)
    
      MsgBox "「" & 数えたい文字列 & "」 の出現回数:" & count & "個"
    
    End Sub
    
    Function 単語の出現回数を数える関数(forString As String) As Long
    
      Dim myRange As Range
      Dim wP As Long
      Dim wE As Long
      Dim LastwE As Long
      Dim LastwP As Long
      Dim WordCnt As Long
      Dim GetWord As String
    
      LastwP = ActiveDocument.Range.Information(wdNumberOfPagesInDocument)
    
      ActiveDocument.Range(0, 0).Select
      Set myRange = ActiveDocument.Range(0, 0)
    
      With myRange.Find
          .Text = forString
          .Forward = True
          .Wrap = wdFindContinue
          .Format = True
          .MatchCase = True
          .MatchWholeWord = True
          .MatchByte = False
          .MatchAllWordForms = False
          .MatchSoundsLike = False
          .MatchWildcards = False
          .MatchFuzzy = False
          .MatchWildcards = False
    
          Do While .Execute
    
              With myRange
                  wE = .End
                  wP = .Information(wdActiveEndPageNumber)
              End With
    
              If wE < LastwE Or wE = LastwE Then
                  Exit Do
              End If
    
              WordCnt = WordCnt + 1
              LastwE = wE
    
          Loop
    
      End With
    
      単語の出現回数を数える関数 = WordCnt
    
    End Function
    
  3. @troglodytes525

    Questioner

    マクロの構文まで作成して頂きまして、有難うございます!
    ページ数も文字列の種類も相当数あるので、RPAに組込んでみようと思います。

  4. うまく適用できるといいのですが・・・

そもそもなのですが、最初はCtrl+Fで検索窓が開き、検索文字列を入力しますが、同じ文字列の繰り返しの検索(次へ)は、Ctrl+Gで出来ると思うのですが、どうでしょうか?

0Like

Comments

  1. @troglodytes525

    Questioner

    Ctrl+Gでも、Ctrl+BとEnterを行った後は、1個目に戻ってしまいます。

  2. そうなんですね、失礼しました。

Your answer might help someone💌