delphiCADOCR.exe Ver.1.12a 2026/02/23b

■ 概要

　・スキャンした PDF
　・CAD から出力された PDF でストーロークフォントがポリラインに変換された PDF
　・CAD 上の画像
　・CAD 上の文字
　の OCR に使えます。
　図面の微妙な回転を修正してから使って下さい。
　尺度は元の用紙サイズに合わせておくと、文字サイズがイメージしやすいです。
　
　OCR は Windows 11 標準の Snipping Tool の「テキストアクション」で使われている
　ライブラリを使用しています。
　このため、提供ファイルにはライブラリを同梱していません。
　ご自身で、ライブラリを追加する必要があります。
　
　一括で文字角度の丸めが行えます。
　微妙な角度の文字列が無いのであれば、15°毎に丸めとか出来ます。
　文字高さは、CAD 上で変更したほうが速くて間違いが少ないです。
　
　OCR 結果は、result.txt に保存されます。
　TEXT は DXF ファイルを作成して、分解挿入しています。temp.dxf が作成されていれば、
　再利用できます。
　
　一応、BricsCAD V20、V26、IJCAD 2025、ZWCAD 2026、GstarCAD 2023, AutoCAD 2026, 
　ARES 2026 での動作を確認しています。

　文字基点を画面中央に表示、オレンジ色の三角で位置を示す機能がありますが、CAD に
　よって期待どおりには動きませんでした。

　ZWCAD 用として、切り取り画像から OCR 後の文字と思われる範囲を削除した画像ファイルを
　作成できます。（画像のサイズは、2048 x 2048 以下に縮小されます）
　そのファイルを ZWCAD にドラッグ＆ドロップすると、「ベクトル化」の画像として使えるよう
　になります。

　※確認用画像の作成は、「切り取り」後の元画像と OCR 結果のファイルから作成されます。
　　どちらかが変更されると、正しい結果にはなりません。
　　例えば、画像ファイルを SnippingToolOcrText.exe に画像ファイルをドラッグ＆ドロップ
　　したときは、OCR 結果のファイルだけが更新され、「切り取り」後の元画像と合わなくなります。
　
■ 使い方

　対象の PDF ファイル
　・スキャンした PDF
　・CAD から出力された PDF で SHX（ストロークフォント）が使われている PDF
　　(PDFIMPORT で文字が TEXT ではなくポリラインになっている)

　予め、PDFATTACH コマンドで PDF ファイルをアタッチしておきます。
　画像（PNG、JPG）ファイルの時は、IMAGEATTACH です。
　スキャンした図面の時は、微妙に傾いているので、ROTATE .. R（参照）で補正。
　尺度用紙サイズに合わせておくと、文字高さが確認しやすくなります。

　アタッチした PDF、画像 が不要になった時は、CAD 上の PDF、画像を削除。
　XREF でアタッチ解除を行って下さい。

　1. [CAD] ボタンで対象の CAD を変更。
　2. CAD 画面を対象の範囲が見えるように適当にズーム。
　　 GRID をオフに（特に二値化の場合）したほうが良さそうです。
　3. [切り取り] ボタンをクリック。
　4. CAD 上で切り取り範囲の左上コーナーの座標を指示。
　5. 右下コーナーの座標を指示。
　※マウスドラッグでは無くて２点の座標指示です。

　しばらく待つと、OCR 結果が一覧で表示されます。

　文字の角度は微妙な数値なので、これを丸めます。
　[角度丸め] ボタンの右横の数値を変更して、[角度丸め] をクリックすると、すべての
　角度が丸められます。
　文字の角度が、水平、垂直のみであれば、90　にします。
　
　CAD 上の文字の角度が水平だけの時に、リストの角度が 90、270 に近い値になっている
　ときは、基点と文字の方向を間違えているので、CAD 上で何かマークを付けておいて、
　あとで修正して下さい。

　文字数が 2 以上で「文字高さ >= 文字幅 x 1.4」の時は、自動で補正しています。
　文字数が 1 または文字数が少なくて文字幅が小さい時に間違えるようです。

　リストの項目名をクリックすると、昇順でソートされて見つけやすくなります。
　元の順に戻すには No. をクリックします。

　位置と文字高さは、「TEXT 挿入」後に CAD 上で変更して下さい。

　リスト上でマウスをスクロールすると、一行ずつの画像と OCR 結果が表示されます。
　これを比較し、画像下の OCR 文字を編集して下さい。不要な文字は削除して下さい。
　例えば、破線の一部が数字の 1 に、小さい円が O に変換されたりします。

　画像下の編集ボックスで [Enter] キーを押すと、次の行に移動します。
　[Shift] + [Enter] キーで１つ前の行に移動します。

　リスト内のキー操作も同様ですが、一度リスト内の文字編集モードになります。
　文字確定のために [Enter] キーを押す必要があります、

　文字の編集は、画像下の編集ボックスだけでなく、リスト内のセルで [Enter] キーを押す
　と編集できるようになります。

　Ver.0.98 で UNDO、CUT、COPY、PASTE 機能を追加しました。
　複数のセルの選択は、[Shift]+矢印キーです。

 「再読み込み」ボタンで OCR 直後に戻ります。

　対象の文字の CAD 上で確認したいときは、「中央」のチェックをオンにします。

　画像下部の OCR 表示。編集ボックスの右側の ">" を CAD 画面の中央に合わせておくと、
　画像、OCR 文字、CAD 上の文字が、確認しやすくなります。
　「矢印」のチェックをオフにしておくと、画面移動が速くなります。
　
「矢印」のチェックがオンのときは、画面中央が文字位置になり、オレンジ色の三角で示されます。
　CAD によって、画面移動が遅かったり三角が表示されなかったりします。
　画面移動が遅すぎる場合は、必要時にのみオンにして下さい。

　ZWCAD, AutoCAD で三角矢印が消える、動きが遅いときは、起動していない状態で、ini ファイルの
　Zcad Sleep=300、Acad Sleep=200 の値を変更してみて下さい。
　三角矢印が消えない程度の小さい値にしてください。
　※ARES では、異なる位置に描画されます。

　[TEXT 挿入] ボタンをクリックすると、DXF ファイルが作成され、CADOCR 画層に挿入されます。
　文字幅係数は、0.5 〜 1.0 で自動計算されますが、基準となる数値が無いので、大雑把です。
　CAD 上で文字高さと横幅係数を変更して下さい。

　[TEXT 作成] ボタンをクリックすると、１行ずつ TEXT を作成します。
　CAD、CAD のバージョンによって、時間がかかることがあります。
　文字幅係数は、0.5 〜 1.0 で自動計算されます。文字幅係数 1.0 で一度描いてみて、その幅が
　OCR で検出した幅を超えるときは、横幅係数を逆算しています。
　このため、元の文字列の幅より小さくなることがあります。
　CAD 上で文字高さと横幅係数を変更して下さい。

　Ver.0.96、Ver.0.97a
　OCR 対象の文字範囲を「文字枠の色」で線分を描画し、OCR モレの文字を確認しやすくなりました。
　「切り取り」後に関連付けられたプログラム（こちらでは、Photos.exe ）が起動します。
　後から確認するときは、「画像確認」ボタンをクリックしてメニューから「OCR 後の...ライン描画」
　を選択して下さい。

　Ver.0.97
　OCR 後の文字の範囲を切り取り画像から削除（塗りつぶし）した画像の作成を追加しました。
　「画像確認」ボタンをクリックして、メニューから「OCR 後の...白色で塗りつぶし」、または
　「OCR 後の...黒色で塗りつぶし」を選択してください。
　背景が黒色のときは、ZWCAD の「ベクトル化の構成」から設定を変更するか、新規作成で追加する
　必要があります。

　Ver.0.97a
　画像表示を関連付けられたアプリで開くに変更

　Ver.0.98
　CAD 上で正しく表示されない可能性のある文字の検出機能を追加しました。
　一覧表の項目名[文字列]をクリックすると、ソートと同時に、文字列のチェックが行われます。
　表示されないか可能性のある文字のときは、画像下の編集ボックスの左が黄色に変わります。

　Ver.1.0
　CAD 上への TEXT 作成で、文字幅係数の自動計算を追加しました。
　ほぼ文字幅は合いますが、文字高さの取得が正確ではないので、参考程度になります。
　CAD によって動かない可能性があります。

　Ver.1.05
　一覧表示欄のマウス右クリックのポップアップメニューから、LISP コマンドの実行を追加しました。

　Ver.1.08
 「切り取り」後、即座に TEXT 挿入、TEXT 作成のチェックボックスを追加しました。
　速い PC 環境であれば有効です。部分ごとの OCR を繰り返すときは便利です。

■ SnippingTool OCR の情報元

　Windows11 SnippingTool OCR from commandline
　https://b1tg.github.io/post/win11-oneocr/
　上記の C# ラッパー（Apache-2.0 license）
　https://github.com/ksasao/SnippingToolOcrSharp

■ ファイル構成

　・delphiCADOCR.exe : プログラム本体
　・readme.txt : 説明ファイル
　・TargetCAD_APIVersion.txt : CAD ごとの ProgID（プログラム識別子） のリスト 
　・delphiCADOCR.ini : 終了状態保存ファイル（自動作成）

　・source.png : キャプチャ画像（「切り取り」時に自動で作成）（確認用でプログラム内では使用していません）
　・resultLN.png : OCR 対象の文字範囲を確認するための画像（「切り取り」時に自動で作成）
　・resultBK.png : OCR 対象の文字範囲を黒色で塗りつぶした画像（「切り取り」後に手動で作成）
　　　　　　　　　 文字以外をラスベク変換する元画像として使えます。
　・resultWH.png : OCR 対象の文字範囲を白色で塗りつぶした画像（「切り取り」後に手動で作成）
　　　　　　　　　 文字以外をラスベク変換する元画像として使えます。

　・result.txt : OCR 結果ファイル（自動作成） 

　・temp.dxf : TEXT 作成用一時 DXF ファイル（自動作成）
　　　　　　　 R12 形式の DXF ファイルです。他の CAD での読み込み、挿入に使えます。

　・CADOCR.tsv : result.txt を CAD 座標に変換したタブ区切りファイル（自動作成）（プログラム内では使用していません）
　　　　　　　　 1 行目 = 1 ピクセルあたりの CAD 上の距離 : 切り取り画像の W, H : CAD 上の左下 X,Y 座標
　　　　　　　　 2 行目以降 = 文字列 : 文字を囲う切り取り画像上の 4 点の X,Y 座標の繰り返し : CAD の 4 点の X,Y 座標の繰り返し

　-------------
　以下、Windows 11 の SnippingTool.exe のフォルダからコピーしてください。
　SnippingTool.exe と同じフォルダ内の 3 つのファイル
　・oneocr.dll
　・oneocr.onemodel
　・onnxruntime.dll
　を delphiCADOCR.exe と同じフォルダにコピーしてください。

　こちらの環境での SnippingTool.exe のインストールフォルダは
　C:\Program Files\WindowsApps\Microsoft.ScreenSketch_11.2506.25.0_x64__8wekyb3d8bbwe\SnippingTool でした。

　タスクバーの検索ボックスに Snipping Tool を入力して [Enter]
　Snipping Tool が起動するので、タスクバーを右クリック。
　「タスクマネージャーを起動」をクリック。
　起動中のアプリから「 > Snipping Tool」を見つける。
　「 > Snipping Tool」をクリック。
　その下に表示される「Snipping Tool」を右クリック。
　「ファイルの場所を開く」をクリック。
　このフォルダの 3 つの DLL をコピーします。
　
■ 著作権、制限事項

　使用しているライブラリの著作権は、それぞれの作者、企業が所有しています。
　本ツールの著作権は、作者 f.izawa が所有し、これを主張します。
　本ツールを使用したことによる事故、損害等の一切について、作者はその責を負いません。
　使用される方の責任において、使用して下さい。

　高解像度 DPI 環境で作成しています。他の環境での検証はしておりません。

■ ダウンロード

　Windows 11 で使えます。
　http://www.izawa-web.com/zip/delphiCADOCR_20260210.zip
　※ oneocr.dll、oneocr.onemodel、onnxruntime.dll は、ライセンスの関係上同梱していません。
　※ 以前のバージョンを使われている場合は、delphiCADOCR.exe と ReadMe.txt だけを
　　上書きコピーしても使えます。

■ 履歴

　Ver.0.90  2025/08/17  初版作成
　Ver.0.91  2025/08/17a IJCAD, GstarCAD で画面の中央ズームの位置が違うのを対策
　Ver.0.91a 2025/08/17b ZWCAD で文字位置の三角矢印が消えるため、INI ファイルに Zcad Sleep=500 を追加
　Ver.0.91b 2025/08/17c IJCAD のバージョンによって OSMODE の復帰ができないのを対策
　Ver.0.92  2025/08/18  文字枠に文字基点の描画を追加
　　　　　　　　　　　  文字数が 2 以上で「文字高さ >= 文字幅 x 1.4」の時、基点を自動で補正するを追加
　　　　　　　　　　　  ソートを修正、座標丸めを追加、リスト数字表示を整理
　Ver.0.92a 2025/08/18a 文字基点の X 座標が文字列幅の 1/2 ずれるのを手直し
　Ver.0.93  2025/08/20  AutoCAD 2026 で BMPOUT ができない（直前のキャンセルがエラーになる）のを対策
　Ver.0.93a 2025/08/20a TAB 区切りファイルの出力を追加
　Ver.0.93b 2025/08/20b AutoCAD での三角矢印の描画と遅延の設定を追加
　Ver.0.93c 2025/08/20c ARES 2026 にて動作確認（基本的な変更なし）
　Ver.0.94  2025/08/21  矢印描画のチェックボックスを追加
　Ver.0.95  2025/08/23  文字編集ボックスの[Enter]、[Shift]+[Enter] で対象行の移動を追加
　Ver.0.96  2025/08/25  OCR 後の OCR 対象文字の確認画像の作成を追加
　Ver.0.97  2025/08/26  OCR 後の OCR 対象文字範囲の塗りつぶし画像の作成を追加
　Ver.0.97a 2025/08/26  画像表示を関連付けられたアプリで開くに変更
　Ver.0.97b 2025/08/26  切り取り画像サイズが 2048x2048 以下の時、塗りつぶし画像ファイルが作成されないのを手直し
　Ver.0.97c 2025/08/27  不要な "savebmp2" のダイアログが表示されるのを手直し
　Ver.0.97d 2025/11/19  OCR 後の OCR 対象文字の確認画像の表示を取りやめ
　Ver.0.97e 2025/12/15  「画像確認」ボタンで OCR 後の OCR 対象文字の確認画像が表示されないのを手直し
　　　　　　　　　　　　nanoCAD 5 専用版 NCADOCR.exe を追加

　Ver.0.98  2026/02/01
　　・Exe 内部に OCR 呼び出し機能を組み込み、名前を delphiCADOCR に変更
　　・CAD 上に表示できない可能性のある OCR 文字の検出を追加
　　・OCR 結果の一覧表示に、カット、コピー、ペースト、アンドゥ機能を追加
　　・OCR 結果の一覧表示に、文字列幅の表示を追加（表示のみで幅係数の自動計算は未対応）

　Ver.0.99  2026/02/02
　　・TEXT 作成画層（CADOCR）の色設定を追加

　Ver.1.0  2026/02/02
　　・TEXT 作成で文字幅係数の自動計算を追加
　　※ 作成は TEXT(文字列)ごとなので、かなり時間がかかります。
　　※ CAD、CAD のバージョンによって動かない可能性があります。

　Ver.1.01 2026/02/02
　　・TEXT 作成で最後に REGEN を追加

　Ver.1.02 2026/02/03
　　・切り取り画像の二値化のチェックボックスを追加（が、効果なし）

　Ver.1.03 2026/02/05
　　・作成文字色の初期値が 0 になっていたのを 30 に変更
　　・作成文字高さの係数を追加（0.8 〜 0.9 程度）

　Ver.1.03a 2026/02/05
　　・[TEXT 作成] ボタンを TEXT 作成中は押せないようにした

　Ver.1.03b 2026/02/06
　　・作成文字高さの係数（0.64 〜 0.8 程度）を取得時の高さへの係数に変更
　　　元々取得時の高さ x 0.8（固定）x 作成文字高さの係数 だったのを
　　　取得時の高さ x 作成文字高さの係数に変更
　　　TEXT 作成時の係数ではなく、TEXT 取得時の係数になった
　　　結果、一覧に表示される文字高さが、作成される文字高さになった
　　　ファイルへの出力は変更なし（OCR が返す値をそのまま使用）
　　・[TEXT 作成] 中は、フォームを最小化するに変更

　Ver.1.04  2026/02/06
　　・文字枠、文字色の色選択を簡易 ACI ダイアログに変更

　Ver.1.05  2026/02/07
　　・座標丸め、文字高さの編集ボックスの IME モードがオフになっていなかったのを修正
　　・一覧表示欄のマウス右クリックのポップアップメニューから、LISP コマンドを送る仕組みを追加

　Ver.1.06  2026/02/08
    ・一覧表示欄のマウス右クリックのポップアップメニューに、LISP コマンド２個を追加

　Ver.1.06a  2026/02/08
    ・[TEXT 作成] の進捗が分かりにくいため、一覧表示の項目名にカウントアップ表示を追加。

　Ver.1.07  2026/02/08
    ・一覧表示欄の項目仕切り線のドラッグで項目幅の変更を追加
    ・一覧表示欄の項目名 [文字高] のクリックで、昇順ソート、平均値の表示を追加
　　・「切り取り」時、文字高さの平均値の表示、項目幅の初期化を追加

　Ver.1.08  2026/02/10
    ・「切り取り」後、即座に TEXT 挿入、TEXT 作成のチェックボックスを追加
　　・「TEXT 挿入」の DXF 挿入で文字幅 0.8 固定だったのを自動計算（0.5 〜 1.0 に制限）に変更
　　　※文字列幅の再現性は「TEXT 作成」のほうが優秀。ただし CAD によって遅い、動かないことがある。
　　・取得時の回転角度を 5°毎に丸めるに変更。

　Ver.1.08a 2026/02/11
　　・取得時の回転角度を 5°毎に丸めるのを、「即、TEXT 作成」、「即、TEXT 挿入」時のみに変更
　　　それ以外は、これまでどおり一覧表示にて修正。
　　・「TEXT 作成」で回転角度が反映されないのを手直し。

　Ver.1.09 2026/02/12
　　・挿入、作成 TEXT の高さ固定のチェックボックス、文字高さの設定を追加

　Ver.1.09a 2026/02/16
　　・CAD によって TEXT 作成に時間がかかるのを対策（効果なし）

　Ver.1.10 2026/02/20
　　・部分一致での文字列置換を追加

　Ver.1.11 2026/02/20a
　　・CAD 上で表示できない可能性のある文字を含む行を探すボタンを追加

　Ver.1.11a 2026/02/23
　　・切取り画像の CAD 上の幅、高さの表示を追加
　　・EXE フォルダを表示する「フォルダ」ボタンを追加

　Ver.1.12 2026/02/23a
　　・CAD 上に表示できない可能性のある文字の抜き取り表示を追加

　Ver.1.12a 2026/02/23b
　　・TEXT 作成の秒数表示を追加


■ 謝辞 

　Snipping Tool ライブラリについて GitHub に公開して下さった方々に感謝いたします。

　AutoCAD 2025 での動作状況を教えて下さった LUNE 様に感謝いたします。

■ 作者連絡先
 
　e-mail : f.izawa@dream.com
　URL : http://www.izawa-web.com

