投稿

PC上の自分用Ubuntu日本語デスクトップ開発環境サービスを作る(Vagrant+VirtualBox)

イメージ
本記事では、Windows10 PC上のVirtualBoxとVagrantを利用し、開発環境の構築作業と利用を明確に分離することで、開発に必要な時だけ仮想マシンを利用するようなUbuntu日本語デスクトップ開発環境サービスを考えます。 【目次】 [1]はじめに [2]開発環境のサービス化へ (1)「モノ」から「コト」へ? (2)必要な時だけ使える開発環境 [3]ローカルPC上のサービス実現技術(Vagrant+VirtualBox) (1)VagrantのBOXを利用して環境構築する利点 (2)Vagrantを利用する欠点? [4]自分用開発環境サービス (1)サービスを利用する側(開発作業)のシナリオ (2)サービスを提供する側(BOX作成)の考え方 (3)サービスを提供する側(BOX作成)の作業手順 (4)要点のまとめ [5]Ubuntu日本語デスクトップ開発環境サービス (1)概要 (2)UbuntuのベースBOXから日本語デスクトップ環境のBOXを作成する (3)日本語デスクトップ環境のBOXから開発ツールを追加したBOXを作成する (4)BOXから開発用仮想マシンを作成して開発作業を行う [1]はじめに 開発系の仕事をこなしていくと、現在開発中のものからメンテナンス期のものまで、いろいろな開発環境が必要になってきます。それぞれの開発環境は、OSレベルの違いから、開発言語、ミドルウェア、そしてそれらのバージョンも異なることもありますし、開発中の製品でも複数の製品バージョンが存在したりします。 ちなみに、ここでいう開発環境とは、個別のコード管理やビルド、テストツールというより、開発者がプログラムの作成やデバッグ、テスト実行を行ったり、様々なツールを利用できるローカルPC上のデスクトップ環境のことです。 今の時代(あるいはプロジェクト)が求める要求に応じた技術を利用するためには、今の開発環境が必要になります。一歩先の技術を知るためには、今とは異なる環境が必要になるかもしれません。さらに、過去のプログラムのメンテナンスや移行を行うために、過去の開発環境を再現したくなります。 開発環境は時代や要求に応じて変わってくるものと思いますので、結果として多様な開発環境を管理する方法が欲しくなります。 皆さんは、このような複数の開発環境をどのように管理されているの...

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 で検出されたテキスト(fullT...