これをどう読んだか
- シンボル
- バージョン
- 誤り訂正レベル
- マスク
- 直した符号語
- 書かれ方
- 宣言された文字集合
- 連結シンボルの一枚
- 一致した走査線
- 文字数
- 見つけ方
index.htmlをフォルダから直接開くと、ブラウザがJavaScriptモジュールを読み込めません。そのため読み取る画像を選んでも何も起きません。フォルダはhttpで配信してください。
powershell -ExecutionPolicy Bypass -File serve.ps1
そのうえでhttp://localhost:8080/を開いてください。
コードにカメラを向けるか、写った画像を置いてください。読むのはここだけ、ほかのどこでもありません。
コードを読むのは画素に対する計算で、その画素はもうここにあります。シンボルを見つけ、撮った角度を補正し、マスクを外し、Reed-Solomonで傷んだところを直し、ビットを読み戻す。そのすべてが、このページの中の、あなたが読める二千行ほどのJavaScriptで起きます。カメラも同じ約束であって、その例外ではありません。一コマはこのタブの中に画素として届き、調べられ、消えます。記録もされず、残りもせず、そもそもこのページには送るための通信機能が一つもありません。
いまの通信: 確認中…
オフライン: 確認中…
言葉を信じる必要はありません。DevToolsを開き、ネットワークタブを見ながら、カメラを動かしたままコードを読み取ってみてください。どのリクエストも、映像も、そこに書かれていた文字も、一つとして運びません。あるいはインターネットを切って、それでも読み取ってみてください。
fetch、XMLHttpRequest、sendBeaconの呼び出しにどのデータが渡るか確認できます。Content-Security-Policyは許可した外部サービスを含む接続先を制限します。接続先が一つもないという主張でも、全送信内容の証明でもありません。@の前に置かれたユーザー名、こちらの字形とそっくりな別の文字体系で書かれた名前、そして転送です。 自分で確かめてください。以上のどれも、鵜呑みにする必要はありません。このページは、リポジトリにあるテンプレートと設定から、誰でも読んで実行できるビルドスクリプトが生成しています。その結果はdistブランチに置いてあるので、配信されているものと、ソースをビルドした結果とを差分で比べられます。
github.com/A-Box-of-Tools/website
まず読むとよいのは、Content-Security-Policyについてはconfig/site.toml、写真の中からシンボルを見つけるsrc/binarize.jsとsrc/detect.js(しきい値、切り出し用の位置検出パターン、そして射影変換)、読み戻すsrc/qr-decode.js、読み違えたところを直すsrc/reed-solomon.js、縞模様のほうのsrc/linear.js、そしてこのページでカメラに触れる行のすべてであるsrc/camera.jsです。
勤務先のセキュリティソフトがアップロードを警告した場合。ファイル選択時の警告だけでは、送信されたことは証明できません。ローカル処理では、ブラウザーのネットワークタブでリクエストのURLとデータを確認し、このページのソースと照合してください。任意の取得や意図した共有には個別の説明があります。IT担当者も同じ確認ができます。
写真でも、スクリーンショットでも、カメラでも。どれを選んでも、画像はここで、このページの中で、あなたの端末の上で読まれます。何もアップロードされず、カメラの一コマは調べられて捨てられるだけで、記録はされません。
Ctrl+Vで画像をそのまま貼り付けることもできます。画面に映っているコードのスクリーンショットが一番速い道です。
ライトを点ける ライトが付いているカメラは一部だけで、ページからの要求を通すブラウザーも一部だけです。ここに出ていないなら、それは付いていないということです。
ここで正直な表示はカメラのランプです。映像が届いている間は点いていて、止めた瞬間に消えます。その二点の間にあるものは何一つディスクに書かれませんし、このページのContent-Security-Policyには、画像を送れる宛先が一つもありません。
見せるだけで、開きません。印刷されたコードは誰にも読めないアドレスであり、その上にシールを貼ることが誰かにとって割に合うのは、まさにそのせいです。ですから文字列は全体がここに出ていて、実際にたどり着くホストは独立した一行に取り出してあります。
# QR・バーコード読み取り|画像からでもカメラからでもQRコードを読み取る コードにカメラを向けるか、写った画像を置いてください。読むのはここだけ、ほかのどこでもありません。 > 写真、スクリーンショット、カメラからQRコードを読み取り、開く前にリンクの行き先をそのまま確かめられます。EAN、UPC、Code 128、Code 39、ITFのバーコードにも対応。何もアップロードされません。 これはhttps://abox.tools/ja/qr-barcode-reader/にあるブラウザー用の対話型ツールです。ファイルはそのブラウザーを実行する端末上で処理します。意図した共有や任意の通信機能はページ内で説明します。以下は文章による説明です。利用するにはアドレスを開いてください。 ## 画像とその中のコードは**ブラウザー内で処理**されます。処理のためのアップロードはありません。 コードを読むのは画素に対する計算で、その画素はもうここにあります。シンボルを見つけ、撮った角度を補正し、マスクを外し、Reed-Solomonで傷んだところを直し、ビットを読み戻す。そのすべてが、このページの中の、あなたが読める二千行ほどのJavaScriptで起きます。**カメラも同じ約束であって、その例外ではありません。**一コマはこのタブの中に画素として届き、調べられ、消えます。記録もされず、残りもせず、そもそもこのページには送るための通信機能が一つもありません。 - ✗ アップロードなし - ✗ アカウント不要 - ✗ 記録なし - ✓ オフラインで動作 - ✓ オープンソース ## 画像をアップロードせずにQRコードを読む手順 1. **画像を渡す。** 写真かスクリーンショットを枠に置くか、直接貼り付けるか、カメラのボタンを押してください。一度に何枚でもかまいません。それぞれ別に読まれ、それぞれに答えが出ます。画面にすでに映っているコードのスクリーンショットが一番速く、一番確実です。レンズも角度も光も関わらないからです。 2. **余白ごと、シンボル全体を画面に入れます。** コードのまわりの白はコードの一部です。読み取り機はそこでシンボルの終わりを知ります。四角のふちで切り落とされた写真は、読めない理由としてずば抜けて多いものです。画面のおよそ半分をコードで埋めるくらいがちょうどよく、それより近づけると角が画面から出ます。 3. **何かを決める前にアドレスを読む。** ポスターや駐車券売機や封書のコードを読み取るのは、行き先を知るためです。そしてそれこそ、スマホのカメラが実のところさせてくれない唯一のことです。ここではホストが独立した一行に出ます。心当たりのない名前だったなら、来た目的はもう果たされていて、開くものは残っていません。 4. **警告は、とくに目立たないものほど本気で受け取る。** 素の`http://`のアドレス、見た目どおりの文字体系ではない名前、短縮サービス、アドレスの`@`より前にある何か。どれも現れた場所で名指しされます。どれ一つとして、それだけで何かを証明するものではありません。そしてどれもが、行く前の十秒に値します。 5. **読めないときは、何よりまず光を変える。** 失敗のほとんどはしきい値の問題です。真ん中を横切る映り込み、片隅にかかる影、バックライトを拾う角度で撮った画面。反射がコードに乗らない位置へ動くか、カメラのライトを点けてください。それでも駄目なら、真正面から平らに一枚撮って、その静止画を置いてください。静止画は、生の映像より格段に念入りに探されます。 6. **答えが妙なら、読み取った絵を確かめる。** 「これをどう読んだか」を開いて、小さな格子を見てください。それは、読み取ったモジュールから描き戻した、このページがコードだと思ったものです。シンボルを読み違えたうえで、それらしい形に直してしまった読み取り機は、そこにだけそれを表します。 ## 詳しい解説 [QRコードを作り、読めることを証明する方法](https://abox.tools/ja/guides/make-a-qr-code-and-prove-it-scans/): コードを生成したら、同じサイトのリーダーで検証します。正確な中身と本当のリンクを、印刷サイズで、写真から、大量印刷の前に。すべてブラウザーで、何もアップロードせずに。 ## 箱の中のほかのツール - [ハッシュとチェックサム](https://abox.tools/ja/hash-checksum/): 配布元が出した数字とダウンロードを照らし合わせる。どこにも送らずに。 - [パスワード・パスフレーズ生成](https://abox.tools/ja/password-generator/): 作るのはこのページ、動くのは手元のブラウザ。どこにも送られず、保存もされず、履歴も残りません。 - [JSONフォーマッター](https://abox.tools/ja/json-formatter/): JSON・XML・HTML・CSS・YAMLを、整形するか変換します。よそのサーバーに貼り付けるものは何もありません。 - [YAML・JSON変換](https://abox.tools/ja/yaml-to-json/): 双方向で、それぞれの代償も伝えます。どちらも、よそのサーバーに貼り付けられることはありません。 ## よくある質問 ### 画像はどこかへアップロードされますか? されませんし、そこから読み取ったものもされません。画像はこのページの中のキャンバスへデコードされ、このサイトから配信された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のレベルの説明](https://www.qrcode.com/en/about/error_correction.html)もご覧ください。 ### `bit.ly`のリンクの行き先が分からないと言われるのはなぜですか? 調べるということは`bit.ly`に尋ねるということで、それは通信だからです。このページの言い分は残らず、ここには何かに接続するコードが一つもないという点に載っています。黙って例外を作れば、その答えより失うもののほうが大きい。ですから短縮サービスの名前は出したうえで、その先は正直に分からないままにしてあります。解きたいのであれば、尋ねる気のある道具に貼ってください。 ### そもそもQRコードを読み取るのは安全ですか? 読み取ること自体は安全です。危ないのは従うことで、これは本当に危険です。本物の上に貼られたコードは、駐車券売機でも、飲食店のテーブルでも、宅配の不在票でも、名前が付くほど当たり前になりました。それが効くのは、見ただけでコードを読める人がいないからです。開かずに読むこと、つまりこのページがしていることは、その優位をまるごと取り去ります。ホストを見る十秒が、防御のすべてです。 ### 結果の下にある小さな格子は何ですか? このページがあなたの画像から実際に読み取ったモジュールを、一モジュール一マスで描き戻したものです。読み取りを信じるのではなく目で確かめられるように置いてあります。その格子が撮ったコードに似ていれば、上の答えは正しい画素から出ています。これを見せる読み取り機はほとんどありません。そしてそこが、確かめられる道具と、信じるしかない道具の違いです。 ### 一枚の画像から複数のコードを読めますか? 今のところ一枚につき一つです。何枚かまとめて置けばそれぞれ別に読まれますし、カメラは動かすたびに次々とコードを読み、まだ見ていないものを残していきます。コードがびっしり並んだ紙の写真一枚は、切り抜くか、カメラを一つずつ向ける場面です。 ### 頼んだのと違う名前でバーコードが呼ばれるのはなぜですか? バーコードは自分の名前を持ち歩かないからです。UPC-Aは先頭が0のEAN-13であり、ITF-14は十四桁で検査数字の合うインターリーブド2 of 5であり、Code 128の数字モードはほかのどれとも似ていません。このページが報せるのは、バーが言っていることと、検査数字が裏づけたことだけです。シンボル自身が知っているのもそれだけです。 ### オフラインでも動きますか? 動きます。ページを一度読み込んだあとインターネットを切っても、カメラも含めてそのまま動きます。何もアップロードされていないことを示す一番簡単なやり方でもあります。デコードのために画像を送り出す読み取り機なら、線を抜いた瞬間に止まるからです。 ## この主張を確かめる方法 - **画像がアップロードされることはなく、カメラも例外ではありません。** ここに置いた写真は、このページの中のキャンバスへデコードされ、そこで読まれます。カメラの一コマも同じことが毎秒三十回起きているだけです。そのキャンバスに描かれ、調べられ、次の一コマに上書きされます。記録される一コマはなく、残る一コマもなく、停止を押したときにカメラのランプが消えること、それがすべてです。 - **ここには何かを取りに行くものがありません。** 解読した文字とリンクはローカル表示し、自動で開きません。短縮リンクの解決は相手への接続が必要なので行いません。処理ソースと`fetch`、`XMLHttpRequest`、`sendBeacon`の呼び出しにどのデータが渡るか確認できます。`Content-Security-Policy`は許可した外部サービスを含む接続先を制限します。接続先が一つもないという主張でも、全送信内容の証明でもありません。 - **アドレスは見せます。開くことはしません。** 印刷されたQRコードは誰にも読めないアドレスであり、その上にシールを貼ることが誰かにとって割に合うのは、まさにそのせいです。ここでは何も開きません。文字列は全体がそのまま表示され、実際にたどり着くホストは別の行に取り出され、あるアドレスを別のアドレスに見せかける手口は、現れた場所で名指しされます。`@`の前に置かれたユーザー名、こちらの字形とそっくりな別の文字体系で書かれた名前、そして転送です。 - **何を読み取ったのかも見せます。** QRの結果の下には、このページが実際にあなたの写真から読み取ったモジュールの絵があります。それが読み取ったコードに似ていれば、上の答えは確かです。砂嵐に見えるなら確かではありません。文字列だけを返してそれきりの読み取り機は、こうして確かめることができません。 - **Googleが読み込むもの、そして渡されないもの。** 広告と計測のスクリプトはGoogleから、寄付ボタンはBuy Me a Coffeeから来ます。そのどれにも、画像も、カメラの一コマも、そこから読み取ったものも渡されません。画素を文字列に変える行はすべて、このオリジンから配信され、リポジトリに載っています。 - **オフラインで動きます。** ネットワークを切ってもこの道具は変わりません。カメラも含めてです。もともと通信の手順が一つも入っていないからで、これが一番簡単な証明です。 **自分で確かめてください。**以上のどれも、鵜呑みにする必要はありません。このページは、リポジトリにあるテンプレートと設定から、誰でも読んで実行できるビルドスクリプトが生成しています。その結果は`dist`ブランチに置いてあるので、配信されているものと、ソースをビルドした結果とを差分で比べられます。 https://github.com/A-Box-of-Tools/website まず読むとよいのは、Content-Security-Policyについては`config/site.toml`、写真の中からシンボルを見つける`src/binarize.js`と`src/detect.js`(しきい値、切り出し用の位置検出パターン、そして射影変換)、読み戻す`src/qr-decode.js`、読み違えたところを直す`src/reed-solomon.js`、縞模様のほうの`src/linear.js`、そしてこのページでカメラに触れる行のすべてである`src/camera.js`です。
http://のアドレス、見た目どおりの文字体系ではない名前、短縮サービス、アドレスの@より前にある何か。どれも現れた場所で名指しされます。どれ一つとして、それだけで何かを証明するものではありません。そしてどれもが、行く前の十秒に値します。 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に尋ねるということで、それは通信だからです。このページの言い分は残らず、ここには何かに接続するコードが一つもないという点に載っています。黙って例外を作れば、その答えより失うもののほうが大きい。ですから短縮サービスの名前は出したうえで、その先は正直に分からないままにしてあります。解きたいのであれば、尋ねる気のある道具に貼ってください。
読み取ること自体は安全です。危ないのは従うことで、これは本当に危険です。本物の上に貼られたコードは、駐車券売機でも、飲食店のテーブルでも、宅配の不在票でも、名前が付くほど当たり前になりました。それが効くのは、見ただけでコードを読める人がいないからです。開かずに読むこと、つまりこのページがしていることは、その優位をまるごと取り去ります。ホストを見る十秒が、防御のすべてです。
このページがあなたの画像から実際に読み取ったモジュールを、一モジュール一マスで描き戻したものです。読み取りを信じるのではなく目で確かめられるように置いてあります。その格子が撮ったコードに似ていれば、上の答えは正しい画素から出ています。これを見せる読み取り機はほとんどありません。そしてそこが、確かめられる道具と、信じるしかない道具の違いです。
今のところ一枚につき一つです。何枚かまとめて置けばそれぞれ別に読まれますし、カメラは動かすたびに次々とコードを読み、まだ見ていないものを残していきます。コードがびっしり並んだ紙の写真一枚は、切り抜くか、カメラを一つずつ向ける場面です。
バーコードは自分の名前を持ち歩かないからです。UPC-Aは先頭が0のEAN-13であり、ITF-14は十四桁で検査数字の合うインターリーブド2 of 5であり、Code 128の数字モードはほかのどれとも似ていません。このページが報せるのは、バーが言っていることと、検査数字が裏づけたことだけです。シンボル自身が知っているのもそれだけです。
動きます。ページを一度読み込んだあとインターネットを切っても、カメラも含めてそのまま動きます。何もアップロードされていないことを示す一番簡単なやり方でもあります。デコードのために画像を送り出す読み取り機なら、線を抜いた瞬間に止まるからです。
うまくいきましたか?
何がうまくいきませんでしたか?
ありがとうございます——助かります。
送られるのは答えだけ、しかもボタンを押したときだけです。ファイルも、その名前も、それにまつわる情報も、送られることはありません。