delphi CADOCR Ver 1.08a 2026/02/11


BricsCAD, IJCAD, GstarCAD, ZWCAD, AutoCAD を対象にしていますが、すべての CAD、バージョンでの動作確認はしていません。
フォーム右上の[CAD] ボタンからターゲットの CAD を変更してください。
Ver.0.97e にて、nanoCAD 5 専用版を追加しています。
Ver.0.98 にて、外部 EXE、DLL の機能をプログラム本体に組み込んでいます。

とりあえず、どんな感じか試すには、適当な図面を開いて、「切り取り」をクリック。
CAD 上で OCR 範囲の左上、右下の2点を指示。
切り取り範囲の画像が表示されて OCR が始まります。
しばらく待つと、OCR 結果がリストに表示されます。
「TEXT 挿入」をクリックすると、CAD 上に OCR 文字が作成されます。
文字高さ、角度は別にして、基点の位置はほぼ合っていると思います。
CAD をアクティブにして、[CTRL]+[Z] で挿入前に戻ります。

短い動画→:https://youtu.be/nmaSm8f5JO4


■高 DPI 環境での使用について

 高 DPI 環境で、切り取り範囲を間違える、切り取り画像が劣化することがあります。

 「画像確認」ボタンで、「CAD からの切り取り画像 (source.png)」を選択。
 表示される画像が、CAD の表示とほぼ同じであれば、大丈夫です。
 
 対象のCADのショートカットのアイコンを右クリック。
 ポップアップメニューから「プロパティ」を選択。
 「互換性」タブをアクティブにして、[高 DPI 設定の変更] をクリック。
 「高い DPI スケールの動作を上書きします。」のチェックをオンにして、
 「拡大縮小の実行元:」を「システム拡張」、または「アプリケーション」「システム」のいずれかに変更。
 [OK]をクリック。対象の CAD を再実行すると改善される可能性があります。

 または、「高い DPI スケールの動作を上書きします。」のチェックをオフにすることで、改善される可能性があります。




OCR 対象は CAD 上に表示されている切り取り範囲内の文字が対象になります。
 ・スキャンした PDF(ラスタPDF)、
 ・CAD から出力された PDF (ベクタPDF)のうちストーロークフォントがポリラインに変換された PDF
 ・CAD 上の任意の範囲
 ・・・ の OCR に使えます。
図面の微妙な回転を修正してから使って下さい。

OCR は Windows 11 標準の Snipping Tool のライブラリを使っています。

一括で文字角度の丸めが行えます。微妙な角度の文字列が無いのであれば、15°毎に丸めとか出来ます。
文字高さは、CAD 上で変更したほうが、速くて間違いが少ないです。

OCR 結果は、result.txt に保存されます。
TEXT は DXF ファイルを作成して、分解挿入しています。temp.dxf が作成されていれば、再利用できます。

一応、BricsCAD V26、IJCAD 2025、ZWCAD 2026、GstarCAD 2023, AutoCAD 2026 での動作を確認しています。
文字基点を画面中央に表示、オレンジ色の三角で位置を示す機能がありますが、CAD によって期待どおりには動きませんでした。

IJCAD, GstarCAD で画面中心ズームの位置が違うのを修正しています。

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


キャプチャ画像と、OCR 文字を比較しながら修正します。CAD 画面と比較するよりは、便利です。
画像が縦長の時は小さく表示されます。画像の下のほうにマウスを移動すると、スプリッターが表示されます。
スプリッターを下にドラッグすると、大きく表示されようになります。


 一覧表示欄のマウス右クリックでポップアップメニューが表示されます。(Ver.1.05)
 関連する LISP コマンドが実行できます。


スキャンした図面の OCR 結果です。図面の微妙な傾きは ROTATE R で補正しています。

紫色が作成した文字です。CADOCR 画層に作成されます。位置もほぼ合っています。文字基点は ML(左中)、横幅係数は 0.8 固定。
所々検出されていない文字や、基点、角度を間違えている文字があります。
回転した文字にも対応していますが、文字高さ、回転角度は正確ではありません。

「表示灯、ボタン」の文字が異常に大きいのは、縦書き文字(想定外)が原因のようです。
文字高さ、幅係数、削除されているスペースは、CAD で変更したほうが速いです。

手書き文字 の OCR 結果



Ver. 0.94
 画像下部の OCR 表示、編集ボックスの右側の ">" を CAD 画面の中央に合わせておくと、
 一度に3つの文字(画像、OCR、CAD 上)の確認がしやすくなります。「矢印」のチェックをオフにしておくと、画面移動が速くなります。


Ver.0.96
 OCR 対象の文字範囲を「文字枠の色」で線分を描画し、OCR モレの文字を確認しやすくなりました。
 「切り取り」後に、エクスプローラーが開き、画像ファイル名がアクティブになります。
 ダブルクリックすると、関連付けられたプログラム(こちらでは、Photos.exe )が起動します。

 ※画像に関連付けするアプリとして、フォト(Photos)を登録しておくと、マウス操作が CAD ライクで使いやすくなります。
  また、テキストアクション機能があり、OCR が使えます。

 後から確認するときは、「画像確認」ボタンをクリックしてメニューから「OCR 後の...」を選択して下さい。


「画像確認」ボタンの使い道

 たとえば、「画像確認」ボタンのメニューから「CAD からの切り取り画像,,,」をクリックして、関連付けられたアプリで画像を開きます。
 こちらの環境では、ファイル名のダブルクリックでフォト( Phtos) が開きます。
 下段の真ん中のアイコン「テキストアクション」をクリックします。


 OCR された文字の背景色が変わります。
 必要な文字をマウスドラッグで選択、または [CTRL]+[A] ですべてを選択して [CTRL]+[C] で、クリップボードに文字がコピーされます。


 
 他には、ZWCAD 用として、切り取り画像から OCR 後の文字と思われる範囲を削除した画像ファイルをベクトル化
 作成できます。(画像のサイズは、2048 x 2048 以下に縮小されます)
 そのファイルを ZWCAD にドラッグ&ドロップすると、「ベクトル化」の画像として使えるようになります。
 が、こちらの図面では、期待したほどの成果は得られませんでした。表の罫線には有効かも知れません。
 いずれにしても、尺度を合わせてトレースしたほうが、精度も良くて早くて確実・・・という結論です。
 「ベクトル化の構成」のパラメーターを変更することで、充分に使える(時間短縮になる)ことを確認しました。 


■ 使い方

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

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

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

 1. [CAD] ボタンで対象の CAD を変更。
 2. CAD 画面を対象の範囲が見えるように適当にズーム。
 3. [切り取り] ボタンをクリック。
 4. CAD 上で切り取り範囲の左上コーナーの座標を指示。
 5. 右下コーナーの座標を指示。
 ※マウスドラッグでは無くて2点の座標指示です。

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

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

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

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

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

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

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

 リスト内のキー操作も同様ですが、一度リスト内の文字編集モードになります。
 文字確定のために [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 では、異なる位置に描画されます。

 [W=0.8 挿入] ボタンをクリックすると、DXF ファイルが作成され、CADOCR 画層に TEXT が挿入されます。
 文字幅係数は、0.8 固定です。
 CAD 上で文字高さと横幅係数を変更して下さい。

 [TEXT 作成] ボタンをクリックすると、1行 ずつ CAD 上に TEXT を作成します。CAD によってはかなり時間がかかります。
 文字幅係数は、取得した全体の文字幅から逆算しています。
 基準になる文字高さが正確ではないので、CAD 上で文字高さと横幅係数を変更する必要があります。

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

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

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

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

 Ver.1.0 (delphi CADOCR)
 CAD 上への TEXT 作成で、文字幅係数の自動計算を追加しました。
 ほぼ文字幅は合いますが、文字高さの取得が正確ではないので、参考程度になります。
 ※ 1 TEXT ごとの作成のため、かなり時間がかかります。CAD、CADのバージョンによって動かない可能性があります。

 Ver.1.08 (delphi CADOCR)
 「切り取り」後、即座に TEXT 挿入、TEXT 作成のチェックボックスを追加しました。
 速い PC 環境であれば有効です。部分ごとの OCR を繰り返すときは便利です。
 DXF 挿入で文字幅 0.8 固定だったのを自動計算(0.5 ~ 1.0 に制限)に変更しました。


■ SnippingToolOCR の情報元

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

■ ファイル構成

 ・delphiCADOCR.exe、CADOCR.exe : プログラム本体
  CAD 画面を切り取り、PNG ファイルを作成。それを起動オプションとして SnippingToolOcrText.exe を起動。
  OCR 結果を result.txt で受けとり、フォームに一覧表示しています。
 ・ReadMe.txt : 説明ファイル
 ・TargetCAD_APIVersion.txt : CAD ごとの ProgID(プログラム識別子) のリスト
 ・CADOCR.ini : 終了状態保存ファイル(自動作成)
 ・source.png : CAD から切り取ったキャプチャ画像(自動作成)
 ・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

 を CADOCR.exe と同じフォルダにコピーしてください。

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


■ 著作権、制限事項

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

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

■ ダウンロード

 Windows 11 で使えます。

 最新版:Ver.1.08a : delphi CADOCR.exe(TEXT 作成で回転角度が反映されないのを手直し)
 http://www.izawa-web.com/zip/delphiCADOCR_20260211.zip

 旧版:Ver.1.08 : delphi CADOCR.exe(即座に TEXT 作成、挿入を追加)
 http://www.izawa-web.com/zip/delphiCADOCR_20260210.zip

 旧版:Ver.1.07 : delphi CADOCR.exe(文字高さの平均値の表示、ソートを追加)
 http://www.izawa-web.com/zip/delphiCADOCR_20260208b.zip

 旧版:Ver.1.06a : delphi CADOCR.exe(TEXT作成の進捗表示を追加)
 http://www.izawa-web.com/zip/delphiCADOCR_20260208a.zip

 旧版:Ver.1.06 : delphi CADOCR.exe(TXHUP.lsp 同梱、LISPコマンド2個追加版)
 http://www.izawa-web.com/zip/delphiCADOCR_20260208.zip

 TEXT の幅は「ほぼ」そのままで、文字高さを変更する LISP 他を収納
 exe と同じフォルダに置くと、一覧表示欄のマウス右クリックのポップアップメニューから、
 LISP コマンドを実行できるようになります。(Ver.1.05 ~ 同梱)
 http://www.izawa-web.com/lsp/txhup.lsp

 Ver.0.97e : CADOCR.exe 「画像確認」ボタンで OCR 後の OCR 対象文字の確認画像が表示されないのを手直し
 http://www.izawa-web.com/zip/CADOCR_20251215.zip
 Ver.0.97e : NCADOCR.exe NANOCAD 5 専用の最新版です↓
 http://www.izawa-web.com/zip/NCADOCR_20251215.zip

※ いずれも oneocr.dll、oneocr.onemodel、onnxruntime.dll は、同梱していません。
※ 以前のバージョンを使われている場合は、CADOCR.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 で BMPOUT が実行できない(直前のキャンセル発行がエラーになっていた)のを対策
 Ver.0.93a 2025/08/20a
  TAB 区切りファイルの出力を追加
 Ver.0.93b 2025/08/20b
  AutoCAD での三角矢印の描画と遅延の設定を追加
 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.97c 025/08/27
  切り取り後、画像表示で不要なメッセージが表示されるのを削除
 Ver.0.97d 2025/11/19
  OCR 後の OCR 対象文字の確認画像の表示をとりやめ

 Ver.0.97e 2025/12/15
  「画像確認」ボタンで OCR 後の OCR 対象文字の確認画像が表示されないのを手直し
  NANOCAD 5 専用版を追加

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

 Ver.0.99 2026/02/02
  ・OCRTEXT 作成の画層(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.64 程度)

 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 コマンドを2個追加

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

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

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

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

■ 謝辞

 SnippingTool ライブラリについて GitHub に公開して下さった方々に感謝いたします。
 AutoCAD 2025 での動作状況を教えて下さった LUNE 様に感謝いたします。

■ 作者連絡先

 e-mail : f.izawa@dream.com
 URL : http://www.izawa-web.com