携帯電話で撮影した原稿の向きが間違っています。最初に EXIF を処理してから OCR に送信します。
携帯では契約写真が縦長に見えたのですが、アップロードしたら横長になってしまいました。その理由としては、ピクセル自体が回転されず、視聴者が EXIF 方向マーカーに基づいて表示を調整しているだけである可能性があります。 OCR 入力がこのマークを無視すると、ページは反対方向に読み込まれます。
この記事のポイント
・携帯電話の写真の表示方向が異常です。ピクセルが回転されていない可能性がありますが、EXIF 方向マークはビューアーによって適用されます。 ・OCR入力時にEXIF方向マークを無視した場合、逆方向のページ内容を読み取ってしまう場合があります。
- Pillow の ImageOps.exif_transpose は方向情報を適用し、マーカーを削除しますが、ショットの傾きや遠近法の歪みは処理しません。
・傾き、台形変形、方向マークの欠けは個別に判断する必要があり、一括りにはできません。
- 調整された画像に対して OCR によって返されたフレームは、入力サイズと変換情報を保存する必要があり、元の画像に戻すときに表示するときに逆変換を実行する必要があります。
携帯電話で撮影した契約写真は、アルバム内では縦長ですが、アップロード後は横長になります。多くの人は写真が曲がっているかファイルが間違っていると思うでしょう。この記事は、「表示方向」と「ピクセル方向」を区別するために、携帯電話の写真を OCR または翻訳プロセスに送信する必要がある人向けに書かれています。
これを読むと、EXIF 方向フラグとは何か、それを処理するために Pillow がどの関数を使用するか、そしてそれが解決できない問題が何かがわかります。例では合成サンプルが使用されており、コードは隔離された環境でチェックされていますが、これはすべての実際のファイルや製品のパフォーマンスを保証するものではありません。重要な書類を処理する前に、原本を保管し、本文の境界と許容事項に従って確認してください。
携帯電話で撮った原稿の向きが間違っていた場合はどうすればよいですか?一文の結論
まずImageOps.exif_transposeを使用してEXIF方向マークを適用し、調整された画像をOCRに送信します。傾きと遠近感の問題は個別に処理する必要があります。
| あなたの状況 | 推奨される実践方法 | 理由 |
|---|---|---|
| ビューアは正常に表示されますが、解析結果が横向きになります | まずImageOps.exif_transposeを使用してEXIF方向を適用します | ピクセルは回転されず、表示レイヤーのみが調整されます |
| 写真全体が少し傾いてます | 傾き補正を個別に評価する | exif_transpose は撮影アングルを処理しません |
| 紙は台形です | 用紙の境界を検出し、パースペクティブ補正を実行します | 遠近感の歪みはEXIFの向きの問題ではありません |
| OCR によって返されたボックスを保存する必要がある | 入力サイズ、方向変換、出力サイズを同時に記録 | 調整された画像の座標は元の画像とは異なります |
表示方向とピクセル方向は分けて考える必要があります。
モバイル写真のピクセルはそれ自体回転できない場合があり、ファイル内の EXIF 方向タグが閲覧者にそれを表示する方法を指示します。閲覧者はそれに応じて画像を調整し、OCR エンジンがこのマークを無視すると、ページを反対方向に読み取ります。
Pillow の ImageOps.exif_transpose は、方向情報に基づいてピクセルを調整し、適用された方向マーカーを削除して、後続の回転を回避します。任意のショットの傾きや遠近法の歪みではなく、EXIF の方向を扱います。携帯電話で曲がって撮った紙をまっすぐにするには、やはり幾何学的な処理が必要です。
合成されたピクセルを使用して回転境界をテストする
次のコードは、合成画像を使用して、方向マーカーが正しく適用されているかどうかを確認します。
from PIL import Image, ImageOps
source = Image.new("RGB", (40, 20), "white")
source.putpixel((0, 0), (255, 0, 0))
source.getexif()[274] = 6
fixed = ImageOps.exif_transpose(source)
assert fixed.size == (20, 40)
assert fixed.getpixel((19, 0)) == (255, 0, 0)
assert fixed.getexif().get(274) is None
assert source.size == (40, 20)
again = ImageOps.exif_transpose(fixed)
assert again.size == fixed.size
assert again.tobytes() == fixed.tobytes()
ここでは、隅の赤いピクセルを使用して、OCR エンジンを呼び出したり、実際のテキストをシミュレートしたりせずに、幾何学的関係を確認するのに役立ちます。したがって、このテストでは「方向マーカーが正しく適用されている」という結論のみを裏付けることができ、「テキストの認識率がどの程度向上したか」を裏付けることはできません。例は Pillow に依存しているため、ロックされたバージョンで実行する必要があります。
方向異常を逸らす
方向に問題が発生した場合は、まず現象を観察し、次に原因を特定します。次の表は、次のステップを決定するのに役立ちます。
| 観察する | 考えられる理由 | 次のステップ |
|---|---|---|
| ビューアは通常、パーサは水平 | EXIFは適用されません | 方向ラベルとピクセルを確認する |
| ページ全体が少し傾いています | 撮影角度 | 傾き補正の独自評価 |
| ページは台形です | 遠近法の歪み | 用紙境界検出後の補正 |
| テキストは逆さまですがマークアップはありません | メタデータが欠落しています | ページの内容に従って判断し、盲目的な推測はしないでください |
回転後に座標の記録を開始する必要があります
OCR が調整された画像上にテキスト ボックスを返した場合、ボックスの座標は元のキャプチャされた画像ではなく、調整された画像に対応します。したがって、入力サイズ、方向変換、出力サイズの 3 つの情報を保持する必要があります。ハイライト表示時は座標を逆変換し、元の画像位置に戻します。
どの写真に属するかを記録せずにボックスのグループを保存しただけでは、ハイライトの位置がテキストからずれてしまいます。
翻訳する前に画像の向きを調整します
OmniDoc (製品ポータル)の OCR および翻訳ポータルを通じてスキャンした資料を処理する場合、まずオリジナルとの向きを確認できます。方向性、遠近感、明瞭度の3つの検査項目を個別に確認する必要があります。
入力条件を明確に分類した後、対訳結果を使用して翻訳品質を判断します。欠落している単語が見つかるたびに、その単語が翻訳モデルのせいだと考えていると、実際の入力の問題を見逃してしまうことがよくあります。
参考:Pillow ImageOps。
📊 コアの比較
| 処理対象 | 加工方法 | exif_transpose によって完了したかどうか |
|---|---|---|
| EXIF方向フラグ | マーカーによるピクセルの調整 | はい |
| ページ全体が少し傾いています | 撮影角度補正 | いいえ、独立した評価が必要です |
| ページは台形です | 遠近法補正 | いいえ、紙の境界を検出する必要があります |
🎯 どの方法があなたに適していますか?
もしあなたが……
- ビューアは OK、OCR 結果は横向き: 最初に EXIF の方向を適用してから、OCR を再フィードします。
- 写真全体の傾き: 傾き補正を独立したステップとして扱い、方向処理によって解決されることを期待しないでください。
- 用紙の端が台形です: 最初に用紙の端を検出してから、パースペクティブ補正を実行します。
- 元の画像の位置を強調表示する必要がある: 入力サイズと変換情報を保存し、表示時に逆変換を実行します。
❓ よくある質問 (FAQ)
1. exif_transpose は曲がった紙をまっすぐにすることができますか?
できません。 EXIF 方向マーカーに基づいてピクセルを調整するだけであり、追加の幾何学的処理が必要な撮影角度や遠近法の歪みは処理されません。
2. ビューアは正常に表示されるのに、OCR 結果が水平になるのはなぜですか?
ビューアは EXIF 方向マーカーを適用しますが、ピクセル自体は回転しない場合があります。 OCR がこのマークを無視すると、ページは反対方向に読み取られます。
3. サンプルコードで認識率がどの程度向上したかを確認できますか?
できません。この例では、合成ピクセルを使用して、OCR エンジンを呼び出したり実際のテキストをシミュレートしたりせずに、方向マーカーが正しく適用されていることを確認します。
4. OCR によって返されたフレームが元の画像の位置と一致しないのはなぜですか?
調整されたマップ上で OCR が実行される場合、ボックスの座標は調整されたマップに対応します。入力サイズ、変換、出力サイズを記録し、表示時に逆変換を行う必要があります。
📝 概要
携帯電話の写真の向きについては、まずディスプレイ方向なのかピクセル方向なのかを確認し、それぞれ方向、傾き、遠近感に対応します。重要な書類を処理する前に、原本を保管し、レビューを完了してください。


