人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PDF内にある複数のQRコードに埋め込まれたリンクを一括でURLのリストにする方法はないでしょうか?
印刷物の制作段階でQRコードが正しいものかチェックするのを効率よくできないかと考えております。
現在は紙に出力したものをスマホを手に持ってQRコード読み取りアプリを使い、手動で確認しています。

●質問者: YN710325
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● kanonk
●0ポイント

QRreader beta
こちらを参考にしてみてはいかがでしょうか。
http://ameblo.jp/kosado/entry-11222488140.html


YN710325さんのコメント
すみません、これはウェブページでないと上手くいかないようですね。PDFで同じようなことができるものがあればいいのですが。

kanonkさんのコメント
PDFをwebサーバに上げるなどしてブラウザで表示させればできる気がするのですが、、、。 以前、同僚がやっていたような気がするもので。 違っていたらごめんなさい。

2 ● gizmo5
●0ポイント

REVORECT APL QRリーダー

http://jp.fujitsu.com/group/fct/services/revorect2/
イメージファイルからQRコードを抽出します。
PDFを作成する元ファイルかもしくはPDFを仮想プリンタでイメージファイルに出力して使えば良いでしょう。


RS3BAR for ApeosWare Flow Service

http://www.kernelcomputer.co.jp/rs3bar_apeos.htm
スペックが過剰かもしれませんがPDFファイルから直接QRコードを読み取って処理することができます。


3 ● siachan
●500ポイント ベストアンサー

手間はかかりますが、こんな方法を考えてみました。

まず
http://zbar.sourceforge.net/download.html
から ZBar 0.10 Windows installer をダウンロードしてインストールします。

次に
http://www.ghostscript.com/download/gsdnld.html
から Ghostscript 9.14 for Windows をダウンロードしてインストールします。

環境変数 PATH の最後に C:\Program Files\gs\gs9.14\bin;C:\Program Files\gs\gs9.14\lib; を追加します(デフォルトの設定でインストールした場合)。

つまり、現在の値が

C:\Windows\system32;C:\Windows;

だった場合は

C:\Windows\system32;C:\Windows;C:\Program Files\gs\gs9.14\bin;C:\Program Files\gs\gs9.14\lib;

にします。

やり方がわからない場合は
http://next.matrix.jp/config-path-win7.html
http://algorhythnn.jp/blg/2014/03/12/windows7-setting-path/
http://imagingsolution.net/program/windows8/how-to-set-environment-variables/
あたりを参考に。

エクスプローラで C:\Program Files\gs\gs9.14\bin に移動し(デフォルト設定の場合)、gswin32c.exe または gswin64c.exe のいずれか存在する方を gs.exe にリネームします(コピーしてからリネームでも良い)。

適当なフォルダを新規作成し、そこへ ZBar をインストールしたフォルダにある zbarimg.exe と拡張子がdllのファイル、そして処理したいPDFファイルをコピーします。

メモ帳を起動し、以下の内容を貼り付けて同じフォルダに QR.bat と言う名前で保存します。

@echo off
set TARGETPDF=%*
if "%TARGETPDF%"=="" set TARGETPDF=*.pdf
rem if exist QRDATA.txt del QRDATA.txt

for %%F in (%TARGETPDF%) do echo %%F & zbarimg --raw -q "%%F">>QRDATA.txt
pause

先ほど作ったフォルダ内にあるすべてのPDFファイルを処理する場合には QR.bat をダブルクリックして起動します。

特定のPDFファイルのみ処理したい場合は、スタートメニューにある「コマンドプロンプト」を起動し、先ほど作成したフォルダに移動します。

たとえば c:\qrcode というフォルダを作ったのであれば、

pushd c:\qrcode

と打ち込んでエンターを押します。

あとは、QR に続けて対象のPDFファイルの名前を入力すればOKです。

test.pdf というファイル名であれば、

QR test.pdf

と打ち込んでエンターです。

QR test.pdf sample.pdf

の様に複数のPDFファイルを指定できますし、

QR c:\data\*.pdf

と言うこともできます。

すると、QRDATA.txt と言うファイルが作成されるので、その中に認識されたデータが貯まっていきます。追記していってるので、自分で消さない限り古いデータも残ったままです。


siachanさんのコメント
Ghostscriptを利用すればPDFファイルそのものを解釈して画像として扱えることがわかったので修正しました。ベクタ形式でも問題ありません。

YN710325さんのコメント
詳細な手順を書いていただきありがとうございます。 普段はMacを使っているので、不慣れではありますが QRDATA.txtが作られるところまではいきました。 ところが、QRDATA.txtをメモ帳で開いてみると何も書かれていない状態でした。 指示の通りにやったつもりなのですが。 ・環境はWIndows 8.1です。 ・PDFにはテキストや画像に混ざってビットマップのQRコードが配置されているものです。Indesignで作成したものをPDF書き出ししています。 ・コマンドプロンプトで「gs」エンターを押すと、「GS>」と表示されるので、パスは通っている? ・QRをダブルクリックするとコマンドプロンプトが開いて、フォルダ内のPDF名が順々に表示されていき「続行するには何かキーを押してください」が表示されます。 なにかお気づきの点、確認すべき点などありましたらご指摘ただけるとありがたいです。

siachanさんのコメント
gs エンターと押したときに、そのすぐ下に GPL Ghostscript 9.14 (2014-03-26) Copyright (C) 2014 Artifex Software, Inc. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. GS> と言う文字が出ますか?(背景黒) それとも、新しいウインドウが開いて上記の文字(背景白)が出ますか? あとは、新規作成したフォルダにPDFファイルも入っていて、そのファイル名が test.pdf だったとして zbarimg test.pdf と打ち込んだらどんな表示が出ますか?

YN710325さんのコメント
> と言う文字が出ますか?(背景黒) はい、黒背景に上記の文字ができます。 > zbarimg test.pdf > と打ち込んだらどんな表示が出ますか? scanned 0 barcode symbols from 10 images WARNING: barcode date was not detected in some image(s) things to check: - is the barcode type supported? currently supported symbologies are EAN/UPC(EAN-13, EAN-8, UPC-A, UPC-E, ISBN-10, ISBC-13), Code 128, Code 39 and Interleaved 2 of 5 - is the barcode large enough in the image? - is the barcode mostly in focus? - is there sufficient contrast/illumination? と表示されます。 目的のPDFが読み取り可能な条件に適合していないのかもしれません。

siachanさんのコメント
PDFを画像に変換出来てはいますが、バーコードをバーコードとして認識できてないみたいですね。 モデル2のQRコードであれば問題ないと思うんですが…。 QRコードはビットマップと言うことですが、それ単体で QR.bmp みたいな名前で保存して zbarimg QR.bmp とやっても読めませんか? サンプルがあればこちらでも試せるんですけどね…。 ちなみにPDFがちゃんと画像に変換できているかどうかは、下記の内容をPDFファイルのあるフォルダに適当な名前(たとえば CVJ.bat)で保存し、ダブルクリックで起動すれば連番の画像が出力されるのでそれを見ればわかります。 >|winbatch| @echo off for %%F in (*.pdf) do ( gs -dSAFER -dPARANOIDSAFE -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=0 "-sDEVICE=jpeg" "-sOutputFile=%%~nF_cnv%%02d.jpg" "-f%%F" goto :EOF ) ||<

YN710325さんのコメント
> zbarimg QR.bmp > とやっても読めませんか? 目的のPDFからQRコード部分のみを取り出して 画像を拡大して保存しなおして試したところ、URLを読み取れました! そこで上記のバッチで解像度をあげて画像を書き出してみました。 @echo off for %%F in (*.pdf) do ( gs -r300 -dSAFER -dPARANOIDSAFE -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=0 "-sDEVICE=jpeg" "-sOutputFile=%%~nF_cnv%%02d.jpg" "-f%%F" goto :EOF ) これで出来たたものを、zbarimgをやると目的のURLが QR-Code:http://〜 QR-Code:http://〜 scanned 2 barcode symbols from 1 images と表示されました! ほぼ目的達成なのですが、これを一気にできるようになれば理想なのでアドバイスいただければありがたいです。

siachanさんのコメント
一気にというのはどの部分からですか?

YN710325さんのコメント
QR.batダブルクリックで行われる処理でできれば、と思っております。

siachanさんのコメント
そうではなくて、 >目的のPDFからQRコード部分のみを取り出して >画像を拡大して保存しなおして この部分もやらなければならないのか、それとも拡大して保存したPDFが有るのか、と言うことです。 後者であれば最初の QR.bat を実行すればいいだけですけどね。

YN710325さんのコメント
コマンドのことをよく理解していないので変な言い方になっているかもしれませんが、 最初のQR.batだとPDFからjpegに変換される際に72dpiになっているので、それを300dpiにしたい、ということです。

siachanさんのコメント
すみません勘違いしてました。パラメータが変わってたんですね。 ではこんなんでどうでしょう? >|winbatch| @echo off if exist images\nul rd/s/q images rem if exist QRDATA.txt del QRDATA.txt md images for %%F in (*.pdf) do ( del/q .\images\*.* set /P ZBAR="%%F:"<nul gs -q -dQUIET -r300 -dSAFER -dPARANOIDSAFE -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=0 "-sDEVICE=jpeg" "-sOutputFile=.\images\image%%d.jpg" "-f%%F">nul 2>&1 if ERRORLEVEL 1 (echo PDFからの変換に失敗しました) else ( for %%J in (.\images\*.jpg) do ( zbarimg --raw -q "%%J">>QRDATA.txt ) echo OK ) ) rd/s/q images ||<

YN710325さんのコメント
これで目的のことができました! 非常に丁寧に説明いただきまして勉強になりました。ありがとうございます!

4 ● snow0214
●0ポイント

ImageMagick と ZBARを使えば、PDFファイルからQRコードを読み込んでテキスト(URLを含む)に変換することができます。

PHPを使ったスクリプトが下記サイトで紹介されています。
http://www.aguuu.com/archives/2009/12/zbar-bar-code-reader/


5 ● takuya
●0ポイント

いくつか考えてみました。

1.QRコードは大きさがかなり小さくても読み取りが可能なので、QRコードをスクリーンショットで集めて一枚の紙に印刷して次々チェックしてみてはいかがでしょうか。

2.PDFからQRコードのページをJPEGにする。JPEGをWEB上でQRデコード出来るサービス(例;http://zxing.org/w/decode.jspx)に送信する。
3.QRコードは液晶画面に表示しててもスマホで認識が可能なので、印刷せずに、画面いっぱいにQRコードは並べて表示して複数台のスマホで次々読み取ってみる。

印刷物(ポスター)などは、QRコード掲載位置が不定なので、コンピュータの自動処理をするのは面倒かもしれない。

QRコード毎回チェックは面倒だと思うので、いくつもの表示パターンを試しに作ってみて、読み取りに失敗しやすいパターンを試してみて、印刷前にQRを見て失敗しやすいパターンかどうかを、すぐに判断できるノウハウを蓄積してみてはどうでしょうか。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ