このページのコードが起動しませんでした。

index.htmlをフォルダから直接開くと、ブラウザがJavaScriptモジュールを読み込めません。そのため読み取る画像を選んでも何も起きません。フォルダはhttpで配信してください。

powershell -ExecutionPolicy Bypass -File serve.ps1

そのうえでhttp://localhost:8080/を開いてください。

QR・バーコード読み取り|画像からでもカメラからでもQRコードを読み取る

コードにカメラを向けるか、写った画像を置いてください。読むのはここだけ、ほかのどこでもありません。

言語: 日本語
ソースを見る
画像とその中のコードはブラウザー内で処理されます。処理のためのアップロードはありません。

コードを読むのは画素に対する計算で、その画素はもうここにあります。シンボルを見つけ、撮った角度を補正し、マスクを外し、Reed-Solomonで傷んだところを直し、ビットを読み戻す。そのすべてが、このページの中の、あなたが読める二千行ほどのJavaScriptで起きます。カメラも同じ約束であって、その例外ではありません。一コマはこのタブの中に画素として届き、調べられ、消えます。記録もされず、残りもせず、そもそもこのページには送るための通信機能が一つもありません。

いまの通信: 確認中…

オフライン: 確認中…

言葉を信じる必要はありません。DevToolsを開き、ネットワークタブを見ながら、カメラを動かしたままコードを読み取ってみてください。どのリクエストも、映像も、そこに書かれていた文字も、一つとして運びません。あるいはインターネットを切って、それでも読み取ってみてください。

1 コードを見せる

写真でも、スクリーンショットでも、カメラでも。どれを選んでも、画像はここで、このページの中で、あなたの端末の上で読まれます。何もアップロードされず、カメラの一コマは調べられて捨てられるだけで、記録はされません。

Ctrl+Vで画像をそのまま貼り付けることもできます。画面に映っているコードのスクリーンショットが一番速い道です。

2 中身

見せるだけで、開きません。印刷されたコードは誰にも読めないアドレスであり、その上にシールを貼ることが誰かにとって割に合うのは、まさにそのせいです。ですから文字列は全体がここに出ていて、実際にたどり着くホストは独立した一行に取り出してあります。

Markdownで表示

画像をアップロードせずにQRコードを読む手順

  1. 画像を渡す。写真かスクリーンショットを枠に置くか、直接貼り付けるか、カメラのボタンを押してください。一度に何枚でもかまいません。それぞれ別に読まれ、それぞれに答えが出ます。画面にすでに映っているコードのスクリーンショットが一番速く、一番確実です。レンズも角度も光も関わらないからです。
  2. 余白ごと、シンボル全体を画面に入れます。コードのまわりの白はコードの一部です。読み取り機はそこでシンボルの終わりを知ります。四角のふちで切り落とされた写真は、読めない理由としてずば抜けて多いものです。画面のおよそ半分をコードで埋めるくらいがちょうどよく、それより近づけると角が画面から出ます。
  3. 何かを決める前にアドレスを読む。ポスターや駐車券売機や封書のコードを読み取るのは、行き先を知るためです。そしてそれこそ、スマホのカメラが実のところさせてくれない唯一のことです。ここではホストが独立した一行に出ます。心当たりのない名前だったなら、来た目的はもう果たされていて、開くものは残っていません。
  4. 警告は、とくに目立たないものほど本気で受け取る。素のhttp://のアドレス、見た目どおりの文字体系ではない名前、短縮サービス、アドレスの@より前にある何か。どれも現れた場所で名指しされます。どれ一つとして、それだけで何かを証明するものではありません。そしてどれもが、行く前の十秒に値します。
  5. 読めないときは、何よりまず光を変える。失敗のほとんどはしきい値の問題です。真ん中を横切る映り込み、片隅にかかる影、バックライトを拾う角度で撮った画面。反射がコードに乗らない位置へ動くか、カメラのライトを点けてください。それでも駄目なら、真正面から平らに一枚撮って、その静止画を置いてください。静止画は、生の映像より格段に念入りに探されます。
  6. 答えが妙なら、読み取った絵を確かめる。「これをどう読んだか」を開いて、小さな格子を見てください。それは、読み取ったモジュールから描き戻した、このページがコードだと思ったものです。シンボルを読み違えたうえで、それらしい形に直してしまった読み取り機は、そこにだけそれを表します。

詳しい解説

QRコードを作り、読めることを証明する方法 コードを生成したら、同じサイトのリーダーで検証します。正確な中身と本当のリンクを、印刷サイズで、写真から、大量印刷の前に。すべてブラウザーで、何もアップロードせずに。

よくある質問

画像はどこかへアップロードされますか?

されませんし、そこから読み取ったものもされません。画像はこのページの中のキャンバスへデコードされ、このサイトから配信されたJavaScriptによってそこで読まれます。この道具には通信機能が一つもなく、何かを取りに行くことも、送ることもありません。ページのContent-Security-Policyには接続してよいアドレスがすべて書かれていますが、そのどれもこのサイトのものではありません。一番簡単な証明はインターネットを切ることです。そのまま動きます。

カメラは何か記録していますか?

していません。カメラの一コマはこのタブの中に画素として届き、キャンバスに描かれ、調べられ、十分の一秒ほど後に次の一コマで上書きされます。ディスクには何も書かれず、何も残りません。停止を押した瞬間、タブが背面に回ったとき、ページを離れたときにストリームは止まります。そして信じるべき表示はカメラのランプです。どんなページにもあれを消すことはできません。

なぜ開かずにリンクを見せるのですか?

そこが役に立つところだからです。QRコードは読めないアドレスであり、駐車券売機のコードに貼られたシールが効くのもそのためです。どこへ行ったか分かったときには、もう着いています。ここでは文字列が全部表示され、ホストは独立した一行に取り出され、開くのは読んだあとに押す別のボタンです。ひと手間増えますが、この形式がずっと必要としてきたのはそのひと手間です。

何を読み取れますか?

QRコードはバージョン1から40まで、四つの誤り訂正レベルすべて、数字モード、英数字モード、バイトモード、漢字モードに対応し、ECIの文字集合や連結されたシンボルは黙って捨てずに報告します。縞模様のほうはEAN-13、EAN-8、UPC-A、UPC-E、ITF-14、インターリーブド2 of 5、Code 128、Code 39です。Data Matrix、PDF417、Aztec、MaxiCodeは読みません。

コードが読み取れません。何が悪いのでしょう。

十のうち九は三つのうちのどれかです。白い余白が切り落とされています。読み取り機はそこでシンボルの終わりを知ります。コードの一部に映り込みか影がかかっていて、どのしきい値でも濃い四角と淡い四角を分けられません。あるいは画面の中でコードが小さすぎて、モジュールが一、二画素しかありません。光を変え、画面の半分ほどを埋め、斜めからではなく正面から撮ってください。

傷んだコードや一部が隠れたコードも読めますか?

読める場合があります。Reed-Solomon訂正はシンボルの訂正能力内で損傷したコードワードを復元します。Hレベルの約30%は全コードワードに対する値で、任意のモジュールや面積の30%ではありません。位置検出パターンが損傷すると検出自体ができないこともあります。結果の修復数は実際に訂正した数です。DENSOのレベルの説明もご覧ください。

bit.lyのリンクの行き先が分からないと言われるのはなぜですか?

調べるということはbit.lyに尋ねるということで、それは通信だからです。このページの言い分は残らず、ここには何かに接続するコードが一つもないという点に載っています。黙って例外を作れば、その答えより失うもののほうが大きい。ですから短縮サービスの名前は出したうえで、その先は正直に分からないままにしてあります。解きたいのであれば、尋ねる気のある道具に貼ってください。

そもそもQRコードを読み取るのは安全ですか?

読み取ること自体は安全です。危ないのは従うことで、これは本当に危険です。本物の上に貼られたコードは、駐車券売機でも、飲食店のテーブルでも、宅配の不在票でも、名前が付くほど当たり前になりました。それが効くのは、見ただけでコードを読める人がいないからです。開かずに読むこと、つまりこのページがしていることは、その優位をまるごと取り去ります。ホストを見る十秒が、防御のすべてです。

結果の下にある小さな格子は何ですか?

このページがあなたの画像から実際に読み取ったモジュールを、一モジュール一マスで描き戻したものです。読み取りを信じるのではなく目で確かめられるように置いてあります。その格子が撮ったコードに似ていれば、上の答えは正しい画素から出ています。これを見せる読み取り機はほとんどありません。そしてそこが、確かめられる道具と、信じるしかない道具の違いです。

一枚の画像から複数のコードを読めますか?

今のところ一枚につき一つです。何枚かまとめて置けばそれぞれ別に読まれますし、カメラは動かすたびに次々とコードを読み、まだ見ていないものを残していきます。コードがびっしり並んだ紙の写真一枚は、切り抜くか、カメラを一つずつ向ける場面です。

頼んだのと違う名前でバーコードが呼ばれるのはなぜですか?

バーコードは自分の名前を持ち歩かないからです。UPC-Aは先頭が0のEAN-13であり、ITF-14は十四桁で検査数字の合うインターリーブド2 of 5であり、Code 128の数字モードはほかのどれとも似ていません。このページが報せるのは、バーが言っていることと、検査数字が裏づけたことだけです。シンボル自身が知っているのもそれだけです。

オフラインでも動きますか?

動きます。ページを一度読み込んだあとインターネットを切っても、カメラも含めてそのまま動きます。何もアップロードされていないことを示す一番簡単なやり方でもあります。デコードのために画像を送り出す読み取り機なら、線を抜いた瞬間に止まるからです。