ローカルに保存してある画像ファイルからテキストを抽出したいです  
画像からテキストを抽出するアプリとかオンラインページとかはあるんですが  
数が多いのでプログラムで一気にやりたいんですが簡単に実現する方法はないでしょうか

画像の中には短い単語１つだけがかかる状態に前処理しています  
抽出するテキストは主に日本語ですが  
アルファベットや数字や半角のひらがななんかもある可能性があります

* * *

<https://github.com/tanreinama/OCR_Japanease>  
まず検索して出てきた python のライブラリを使ってみたんですが  
使い方１２３を実行して  
足りないライブラリを pip install してたんですが最終的に以下のようなエラーになります

```

        raise RuntimeError('Attempting to deserialize object on a CUDA '
    RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.
    
```

学習済みのモデルを使うだけでもGPUが必要なんでしょうか  
いずれにしてもハードウェア的な問題みたいなので諦めました

追記：

コメントでいただいた通りGPUを使わないモードがあるみたいで  
サンプル画像に対しては動かすことができました

[![画像の説明をここに入力](https://i.stack.imgur.com/SEHQD.png)](https://i.stack.imgur.com/SEHQD.png)

この画像を読み込ませてみたところ  
`あいうえおBC心3`  
となってしまいアルファベット混じりの文字列の精度があまりよくないみたいです

* * *

* * *

<https://releases.aspose.com/ocr/java/>  
もう１つこちらの java のライブラリも試そうとしたんですが

```

    import com.aspose.ocr.*;
    
    public class Test {
        public static void main(String[] args) throws Exception {
            AsposeOCR api = new AsposeOCR();
            String result = api.RecognizePage("test.png");
            System.out.println("Result: " + result);
        }
    }
    
```

こういうテストコードをかいて aspose-ocr-22.9.jar を同じディレクトリにおいて

```

    javac -classpath .\aspose-ocr-22.9.jar Test.java
    java -classpath ".;.\aspose-ocr-22.9.jar" Test
    
```

で実行したんですが

```

    Exception in thread "main" java.lang.NoClassDefFoundError: ai/onnxruntime/OrtException
    
```

という例外になってしまいます

java は学校で習ったぐらいぐらいでコマンドラインからしか使ったことがないので  
クラスパスの通し方がまずいのかもしれないですが  
コマンドラインから jar をリンクして使うのはどうかけばいいんでしょうか

* * *

* * *

<https://dev.classmethod.jp/articles/google-cloud_vision-api/>

こちらの記事をみながら Google Vison API というのも試してみました  
キー作成してキーのJSONファイルを同じフォルダにおいて  
サンプルコードの画像パスだけかえてをそのまま動かしてみたところ  
以下のエラーになります

```

        raise exceptions.DefaultCredentialsError(_HELP_MESSAGE)
    google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application. For more information, please see https://cloud.google.com/docs/authentication/getting-started
    
```

`set GOOGLE_APPLICATION_CREDENTIALS="D:\orc-test\xxxxx-xxxxx-xxxxx.json"`  
を行ってから再実行してもかわりません

環境は windows10 powershell 上です

`cat "D:\orc-test\xxxxx-xxxxx-xxxxx.json"`  
を実行すると中身が表示されるのでパスは間違っていないはずです

追記：

コメントで指摘していただいた通りパワーシェルじゃなくコマンドプロンプトで実行したところAPIの結果は帰ってきました

```

    google.api_core.exceptions.PermissionDenied: 403 This API method requires billing to be enabled. Please enable billing on project #xxxxxxxx by visiting https://console.developers.google.com/billing/enable?project=xxxxxxxx then retry. If you enabled billing for this project recently, wait a few minutes for the action to propagate to our systems and retry. [links {
    
```

ただ支払いがどうのこうのというエラーになって課金関連の設定までしないと使えないようです。  
ただ趣味で使ってみたいだけであまり理解せずクレカ登録とかするの怖いのでまた時間あるときにドキュメント読んでから試したいと思います

* * *

* * *

言語は ruby / python / javascript(node) / C / C++ / Java  
あたりで他にも簡単に使えるライブラリがあれば教えてほしいです

あるいはライブラリじゃなくてもフリーで使えるAPIとかがあれば  
curl 叩くだけで使えるので紹介してもらえると嬉しいです
CC BY-SA 4.0
2022-10-10T12:02:21.837
91529
2022-10-10T22:56:12.083
2022-10-10T22:56:12.083
19110
question
画像処理
画像からテキストを抽出したい