投稿

10月, 2020の投稿を表示しています

Ubuntu/Colab環境でPDFファイルのページを画像化する(pdf2image、pdftoppm、pdftocairo)

本記事では、UbuntuやGoogle Colaboratory環境で、オープンソースライブラリのPoppler(poppler-utilsに含まれるpdftoppm、pdftocairo)あるいはPythonライブラリのpdf2imageを利用して、PDFファイルのページをJPEGなどの画像ファイルに変換する方法を見ていきます。 【目次】 [1]PDFファイルを画像に変換したいとき? [2]PDFファイル扱うオープンソースライブラリ (参考)ページの画像化と情報抽出について [3]コマンドラインからの利用:poppler-utils (1)poppler-utils (2)インストール (3)pdftoppmの利用例 (4)pdftocairoの利用例 [4]Pythonからの利用:pdf2image (1)pdf2image (2)インストール (3)最も簡単な使い方 (4)メモリを節約する方法(output_folderを利用する方法) (5)メモリを節約する方法(fmtを利用する方法) (6)サムネイルの作成サンプル (7)ページを指定して変換する方法(first_page, last_page) (8)大量ページの変換速度を上げる方法(thread_count) (9)解像度(dpi) (10)pdftocairo/pdftoppmの画像変換結果を直接利用する(use_pdftocairo) (参考)pdfinfo_from_path関数 [1]PDFファイルを画像に変換したいとき? PDF(Portable Document Format)ファイルは広く使われている電子文書です。 PDFファイルは、ブラウザでも表示できますし、無料のAdobe Acrobat Readerをインストールして表示することもできます。 しかし、こういったツールでファイル内容を表示するだけではなく、PDFファイル内のページをJPEGなどの画像ファイルに変換して利用したい場合もあります。 例えば、システム開発において、Webサイトやアプリ内で、PDFファイルの概要をサムネイル表示したいとか、PDFファイルをダウンロードさせたり、ブラウザの別タブでPDFファイルを表示するのではなく、(導線が途切れないように)ページを移動することなく内容を見てもらいたい場合など、いろいろ

Vision API OCR事始め(3):textAnnotations

イメージ
 『 Vision API OCR事始め(2):検出されたテキストの階層構造(fullTextAnnotation) 』に続いて、今回はもう一つのOCRレスポンスデータ表現(textAnnotations)を見ていきます。 【目次】 [1]textAnnotationsとは [2]textAnnotationsが得られる条件 [3]textAnnotationsの構造 [4]具体的な例 (1)設定されるフィールドの確認 (2)localeの確認 (3)画像テキスト全体の領域 (4)画像全体のテキスト [5]fullTextAnnotationとの対応関係の確認 [6]textAnnotationsの内容のまとめ (1)AnnotateImageResponse.text_annotationsフィールド (2)先頭要素のEntityAnnotation型オブジェクト (3)後続要素のEntityAnnotation型オブジェクト (参考)EntityAnnotation.midフィールド [7]fullTextAnnotationとの使い分け [1]textAnnotationsとは Google Vision APIの機能リスト( https://cloud.google.com/vision/docs/features-list?hl=ja )によると、OCR(テキスト検出とドキュメントテキスト検出)機能のレスポンスには、2種類のデータ構造(表現)があるようです。 fullTextAnnotation OCR で検出されたテキスト(fullTextAnnotation)の構造的階層 (TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol) textAnnotations テキストであると識別された単語、境界ボックス、textAnnotations のリスト fullTextAnnotationについては、記事『 Vision API OCR事始め(2):検出されたテキストの階層構造(fullTextAnnotation) 』を参照してください。 本記事では、もう一つのtextAnnotationsについて見ていきます。 ところで、公式ドキュメントの表現

Vision API OCR事始め(2):検出されたテキストの階層構造(fullTextAnnotation)

イメージ
 『 Vision API OCR事始め(1):TEXT_DETECTIONとDOCUMENT_TEXT_DETECTIONの違い 』に続いて、今回は、Google Vision API OCRのレスポンスデータに含まれるテキストの階層構造(fullTextAnnotation)を中心に見ていきます。 【目次】 [1]はじめに [2]テキストの階層構造(fullTextAnnotation) (1)概要 (2)PageとTextAnnotation.pagesフィールド (3)BlockType (4)トラバースサンプル [3]TextProperty (1)DetectedLanguage (2)DetectedBreak [4]TextAnnotation.text [5]テキスト要素のconfidenceフィールド (1)TEXT_DETECTIONの場合 (2)DOCUMENT_TEXT_DETECTIONの場合 [6]テキスト要素のbounding_boxフィールド (1)JPEGなどの画像(BatchAnnotateImages、AsyncBatchAnnotateImagesメソッド)の場合 (2)PDFファイル(BatchAnnotateFiles、AsyncBatchAnnotateFilesメソッド)の場合 [7]最後に [1]はじめに 記事『 Vision API OCR事始め(1):TEXT_DETECTIONとDOCUMENT_TEXT_DETECTIONの違い 』では、Google Vision APIのOCR機能であるTEXT_DETECTIONとDOCUMENT_TEXT_DETECTIONによって抽出されるテキストの大雑把な傾向について見ました。今回から、OCRによって抽出されるテキスト情報の詳細なデータ構造について見ていきます。 Google Vision APIの機能リスト( https://cloud.google.com/vision/docs/features-list?hl=ja )には、テキスト検出(TEXT_DETECTION)とドキュメント テキスト検出(高密度テキスト / 手書き)(DOCUMENT_TEXT_DETECTION)のレスポンスデータとして、 OCR で検出されたテキスト(fullTextA