PCOT関連の掲示板

PCOTの感想、質問、バグ報告受付 / 828

867 コメント
views
828
ぬるっぽ 2025/11/06 (木) 01:15:37 修正 >> 824

ありがとうございます。
貼って頂いたスタックトレースを画像で切り取ってPCOTのAI機能に解説させてみました。

まず結論からですが、先頭で「AccessViolationException」という例外が発生しています。
これは、メモリアクセス違反が発生している状態で、この例外は通常キャッチされない(エラーメッセージを出せない)との事です。

調べた感じ、エラーが捕捉されない理由として、メモリが破損している状態だとアプリの復旧はほぼ不可能だから問答無用で落としてしまうという.Netの仕様との事です。

そして、次にどこでこの例外が発生しているかというと・・・
やはり危惧した通り、Tesseract OCRのライブラリ内で発生している可能性が高いとの事です。
PCOTでは、Tesseract OCRの処理を行う際にTesseract OCRの.Net向けのラッパーライブラリを利用しています。本家のTesseract OCRは(確か)C++製なので、PCOTの開発環境ではそのまま利用できないのです。

AIからの回答からあり得なさそうなもの(メモリ不足や32bitや64bit環境の不整合等)を抜くと
・然るべき場所に言語の学習データ(PCOT\tessdata\eng.traineddata)が存在しないか、もしくは破損している
・ラッパーライブラリのバージョンの不一致、もしくはラッパーライブラリが破損している
・ハードウェアの相性が悪い(CPUかGPUが有力)

とりあえず、AIの回答を関係ありそうな部分に絞って貼っておきます。
画像1

(以下、Geminiの回答)

スタックトレースと前提条件から、最も可能性が高い原因は、Tesseract OCRライブラリのネイティブコード(C/C++で記述された部分)が、特定の環境においてメモリを不正にアクセスしていることです。

具体的には、以下の要因が考えられます。

  • Tesseractのデータファイル(.traineddata)の破損またはバージョン不整合: アプリケーションに同梱されているTesseractの言語データファイルが破損しているか、使用しているTesseractライブラリのバージョンと互換性がない可能性があります。
  • 特定の画像に対する処理の脆弱性: 極めて稀なケースですが、特定の形式や特徴を持つ画像に対して、Tesseractのネイティブコードに潜在的なバグが存在し、メモリ破壊を引き起こす可能性があります。
  • 環境固有のメモリ管理の問題: アプリケーションが動作する環境のメモリ管理に何らかの問題があり、Tesseractが使用するメモリ領域を不正に書き換えてしまう可能性があります。

そして、肝心のエラーの回避方法についてですが
とりあえず、総当たりで確認したいと思います。
以下にTesseractに関係しそうな全てのファイルとその容量の画像をスクショしたので、お手元の環境でファイル名(バージョン)が合っているか、また容量が同じ(壊れていない)かを確認してください。

■Tesseractの言語学習データ(英語)
ファイルパス:PCOT\tessdata\eng.traineddata
画像1

■(ネイティブ)ライブラリ
ファイルパス:PCOT\x86\leptonica-1.85.0.dll
画像1

ファイルパス:PCOT\x86\tesseract55.dll
画像1

■ラッパーライブラリ
ファイルパス:PCOT\lib\TesseractOCR.dll
画像1

これらを全てご確認頂いて、もしファイルに問題が無い場合は残念ながらお手上げです・・・
Windows OCRを利用するか、Gemini OCRを利用するか、Tesseract以外のOCRを利用して頂く他ありません。

お手数をおかけして申し訳ありませんが、ご確認のほどよろしくお願いします。

通報 ...