職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

PDFファイルから文字を取り出してくる話 at #macosnative # 5

macOS native Symposium #5 にて、表題の件で少しばかり登壇させて頂きました。
macos-native.connpass.com
この記事には、発表内容のメモと補足が書いてあります。

発表資料

スライド
speakerdeck.com

デモで使ったコード
this code reads texts of PDF file · GitHub

なぜこの発表をしようと思ったのか?

PDFKitを使うアプリを作っている最中に(なお当該アプリは本業が忙しくて開発凍結中😇)、PDFのファイル構造の解説を交えながら喋ったらみんなの知識のタネになるかなぁ、と考えたことから思い立ちました。当初はPDFの全体的な話をしようと思っていましたが、それでは内容が薄くなってしまうと感じ、文字の話に絞ることにしました(開発が止まっているPDFKit利用アプリは、文字列処理とは全く関係が無いんですけどね😅)。決して、準備にかける時間が足らなかったから、ではありません。

テスト用のPDFファイルで打ち込んでいた文字

  • 1行目 タイトルあいうえお
  • 2行目 パスワード👪👩‍👩‍👧❄️ The Quick Brown Fox Jumps Over the Lazy Dog.

この2行目の文字を拙作 CharViewer で見てみると、次のようになります。

作成時(元々)のテキスト
f:id:t_motooka:20190908225627p:plain

PDFから抽出したテキスト
f:id:t_motooka:20190908225652p:plain

いろいろ違いが見えて面白いですねー。

この発表内容からすぐに応用できる話

会場からの質問で「Macの プレビュー.app で文字を選択してコピーするときも同じ問題が起きるのですか?」というものがありましたが、これはとても良い質問で、経験上は全く同じ問題が起きます。おそらく プレビュー.app の中身も PDFKit なのでしょう。AppleScriptAutomator等でテキスト抽出するときも同じであるはずです。
今日の発表内容を知っていると、PDFからテキストを取り出した時の問題点がどこにあるのか?を分かるようになります。これは開発時だけでなく日常生活でもとても有用です。

更に学ぶために

本を紹介しておきたいと思います。

PDF構造解説

PDF構造解説

こちら↑は、スライドの参考資料でも掲載している書籍です。この本については当ブログでも何度か言及しているので、既に読まれた方も多いかもしれませんね。

タグ付きPDF 仕組と制作方法解説

タグ付きPDF 仕組と制作方法解説

  • 作者: アンテナハウス株式会社
  • 出版社/メーカー: アンテナハウスCAS電子出版
  • 発売日: 2017/10/17
  • メディア: オンデマンド (ペーパーバック)
  • この商品を含むブログを見る
こちら↑は、アンテナハウスさんの本です。私は技術書典の会場(秋葉原だった頃)にて買いました。今日のQ&Aコーナーでも会場から「タグ付きPDFなら、文字情報は正しく取り出せますよ」という補足がありましたが、これは本当にそうです(外部から受領するPDFファイルのどれほどがタグ付きなのか、という話は置いといて…😇)。タグ付きについて詳しくなるには、アンテナハウスさんのコンテンツのお世話になるのが手っ取り早いと思います。

さいごに

セッティングしてくれた、運営チームの皆さんに、本当に感謝です🙇‍♀️🙇‍♂️🙇‍♀️🙇‍♂️🙇‍♀️