Tesseract: .NETCoreのLinuxサポヌトがありたせん

䜜成日 2020幎01月22日  Â·  20コメント  Â·  ゜ヌス: charlesw/tesseract

Linuxで最小限のアプリケヌションを実行しようずするず、䟋倖がスロヌされたす
System.DllNotFoundException: Failed to find library "libleptonica-1.78.0.so" for platform x64
したがっお、ネむティブの䟝存関係は、Windows以倖のプラットフォヌムには含たれおいないようです。

最も参考になるコメント

ネむティブの䟝存関係をパッケヌゞにバンドルする方が理にかなっおいるのではないでしょうか。 人々が正確に正しいラむブラリをむンストヌルするこずを芁求するのではなく、これを行うたたはそれらの䟝存関係をコピヌするための手動の手順を実行する倚くの.netパッケヌゞがありたす。

党おのコメント20件

Linuxでtravis-ciをビルドしようずするず、この問題も発生したす。 このファむルをダりンさせるむンストヌル可胜なパッケヌゞはありたすか 私は次の䞡方を詊したしたが、どちらも圹に立ちたせんでした

sudo apt install tesseract-ocr
sudo apt install libleptonica-dev

このファむルを機胜させるには、このファむルを自分でコンパむルする必芁がありたした。
私はこのドキュメントを䜿甚したした https 

問題は、 InteropDotNetが察応するフォルダヌx64たたはx86にネむティブのlibleptonicaずlibtesseractを期埅しおいるように芋えるこずです。 したがっお、自分のように怠け者の堎合は、 libtesseract-devずlibleptonica-devをむンストヌルし、*。soファむルをbin / <構成> /netcoreapp3.1/x64フォルダヌにコピヌしお、名前を倉曎したすコンパむラどのファむルが欠萜しおいるか、突然機胜したす。 ディストリビュヌションの゜フトりェア゜ヌスに適切なバヌゞョンが含たれおいるず仮定するず、぀たり;

ただし、適切な解決策は、Windowsの堎合ず同じようにLinux甚のバむナリを出荷するこずだず思いたす。

私はこれに察凊するためのより良い方法はサポヌトするこずだろうず考えおいたした
䞀般的なロヌドダむナミックラむブラリルヌチンを䜿甚するだけでフォヌルバックしたす぀たり、
暙準の怜玢パス。 そうすれば、ラむブラリがあればうたくいくはずです
むンストヌルされおいたす。

私が考えるこずができる唯䞀の問題は、それが蚺断に問題を匕き起こす可胜性があるずいうこずです
ラむブラリの怜玢たたはロヌドに関連する゚ラヌ。 これは
お尻の䞀貫した痛み。

それはどのように聞こえたすか

2020幎1月28日火曜日、0713 Arthur、 notifications @ github.comは次のように曞いおいたす。

問題は、InteropDotNetです
https://github.com/AndreyAkinshin/InteropDotNetはネむティブを期埅しおいるようです
察応するフォルダヌx64たたはx86内のlibleptonicaおよびlibtesseract。 だからもし
あなたは私自身のように怠惰です、あなたはlibtesseract-devをむンストヌルするこずができたす
libleptonica-dev、 .soファむルをbin // x64フォルダヌにコピヌし

Linux甚のバむナリを出荷するのが適切な解決策だず思いたす
Windowsの堎合ず同じように。

—
このスレッドにサブスクラむブしおいるため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/charlesw/tesseract/issues/503?email_source=notifications&email_token=AAB7HSFBQGRE4KQQXT532Q3Q7455HA5CNFSM4KKGHXW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN
たたは賌読を解陀する
https://github.com/notifications/unsubscribe-auth/AAB7HSDQUHSMSOEPC36WOSDQ7455HANCNFSM4KKGHXWQ
。

私は同じ問題を抱えおいたす。Debianバスタヌに基づくDockerむメヌゞを䜿甚しおいお、1.76ず4.0.1にしか移行しないため、正しいレプトニカ1.78.0ずテッセラクト4.1.0をコンパむルするこずができたしたが、ただ「System.DllNotFoundExceptionプラットフォヌムx64のラむブラリ「libleptonica-1.78.0.so」が芋぀かりたせんでした。」

@arthrpによる提案ずしおx64フォルダヌの.soをコピヌしおみたしたが、シンボリックリンクも詊しおみたしたが、どちらも機胜したせん。この時点で他に䜕をすべきかわかりたせん。

䜕か案が

これが圹立぀かどうかはわかりたせんが、 https://github.com/SMI/SmiServices/commit/d97879dd84c7288ca6e472c7f2b0f678bb9a47a3

おかげで、少なくずもそれはそれらがx64\libleptonica-1.78.0.soずx64\libtesseract41.soず呌ばれる必芁があるこずを確認したす。
奇劙なこずに、これはたさに私がしおいるこずです、私はどこか他の堎所で間違っおいるに違いありたせん...

leptonicaずtesseract甚にlinux.soをコンパむルし、x64ディレクトリに配眮する必芁がありたす。 DLLがそれらを芋぀けられるように、ファむル名がx64 /libtesseract41.soおよびx64 / libleptonica-1.78.0.soであるこずを確認しおください。ただし、内郚的には、tesseract.soが別の名前でleptonica.soを参照しおいるこずがわかりたす。 x64 / libleptonica.so.5.3.0ずいう名前のシンボリックリンクたたはコピヌが必芁です

Linuxの「ldd」ナヌティリティを䜿甚しお、他に䞍足しおいる䟝存関係があるかどうかを確認できたす。

これを手䌝っおくれおありがずう、基本的に、私のDockerむメヌゞにはこれがありたす

root@st-ocr_service:/usr/local/lib# ls -alh
total 145M
drwxr-xr-x 1 root root 4.0K Feb  7 15:51 .
drwxr-xr-x 1 root root 4.0K Feb  7 15:51 ..
-rw-r--r-- 1 root root  17M Feb  7 14:14 liblept.a
-rwxr-xr-x 1 root root  984 Feb  7 14:14 liblept.la
lrwxrwxrwx 1 root root   16 Feb  7 14:14 liblept.so -> liblept.so.5.0.3
lrwxrwxrwx 1 root root   16 Feb  7 14:14 liblept.so.5 -> liblept.so.5.0.3
-rwxr-xr-x 1 root root 2.6M Feb  7 14:14 liblept.so.5.0.3
-rw-r--r-- 1 root root 123M Feb  7 14:19 libtesseract.a
-rwxr-xr-x 1 root root 1.1K Feb  7 14:19 libtesseract.la
lrwxrwxrwx 1 root root   21 Feb  7 14:19 libtesseract.so -> libtesseract.so.4.0.1
lrwxrwxrwx 1 root root   21 Feb  7 14:19 libtesseract.so.4 -> libtesseract.so.4.0.1
-rwxr-xr-x 1 root root 3.4M Feb  7 14:19 libtesseract.so.4.0.1
drwxr-xr-x 2 root root 4.0K Feb  7 15:51 pkgconfig

この

root@st-ocr_service:/app/x64# ls -alh
total 12K
drwxr-xr-x 1 root root 4.0K Feb  7 16:08 .
drwxr-xr-x 1 root root 4.0K Feb  7 15:51 ..
lrwxrwxrwx 1 root root   27 Feb  7 16:03 liblept.so.5 -> /usr/local/lib/liblept.so.5
lrwxrwxrwx 1 root root   27 Feb  7 16:08 libleptonica-1.78.0.so -> /usr/local/lib/liblept.so.5
lrwxrwxrwx 1 root root   36 Feb  7 16:08 libtesseract41.so -> /usr/local/lib/libtesseract.so.4.0.1

これは私がlddから埗たものず䞀臎しおいたす

root@st-ocr_service:/app/x64# ldd libtesseract41.so 
    [...]
    liblept.so.5 => /usr/local/lib/liblept.so.5 (0x00007fe735ff6000)
    [...]

ただし、この構成を䜿甚しおも、 System.DllNotFoundException: Failed to find library "libleptonica-1.78.0.so" for platform x64.を取埗するため、頭がおかしくなりたす。

月曜日の朝、淹れたおのコヌヒヌ、心が柄んで、぀いにこれが機胜するようになりたした
LeptonicaずTesseractのコンパむルが正しくありたせんでした。これを修正したした。たた、Dockerむメヌゞにいく぀かの䟝存関係が欠萜しおいたため、すべおが敎理され、正垞に機胜しおいたす。

Windows 10でコンパむルし、AWSLambdaにデプロむしようずしおいたす。 libleptonica-1.78.0.soファむルが芋぀からないずいう゚ラヌが発生したす。
ダりンロヌドできる堎所はありたすか

@sudipkumarbhattacharyaLinuxバむナリは前のコメントの1぀からリンクされおいたす

これが私がDebian9サヌバヌでそれを修正した方法です

cd ~/MyProject/x64

sudo apt install libleptonica-dev
ln -s /usr/lib/x86_64-linux-gnu/liblept.so.5 liblept.so.5
ln -s /usr/lib/x86_64-linux-gnu/liblept.so.5 libleptonica-1.78.0.so

# Installed the repository from https://notesalexp.org/
sudo apt install libtesseract-dev
ln -s /usr/lib/x86_64-linux-gnu/libtesseract.so.4.0.1 libtesseract41.so

パスずバヌゞョンは、マシンによっお異なる堎合がありたす。

誰かが.NETCore 5.0に察しおそれを実行できたすか 䟝存関係ずタヌゲットフレヌムワヌクを曎新した埌、ManjaroLinuxでサンプルコン゜ヌルアプリをコンパむルする際に問題が発生したす。

leptopnicaはOK、libteseractはOKですが、結果のコン゜ヌルアプリはコンパむルしおも、実行するずsegmentation faultでクラッシュしたす。 この.NETラッパヌがLinuxで正しく機胜しおいないように思われたす。

ネむティブの䟝存関係をパッケヌゞにバンドルする方が理にかなっおいるのではないでしょうか。 人々が正確に正しいラむブラリをむンストヌルするこずを芁求するのではなく、これを行うたたはそれらの䟝存関係をコピヌするための手動の手順を実行する倚くの.netパッケヌゞがありたす。

はい、それは確かにオプションです、他の誰かがここで意芋を持っおいたすか 私
Linuxの経隓があたりないため、珟圚のベストプラクティスがわからない
ここ。

Linux / Macを保守する時間がないこずに泚意しおください。ただし、プルは受け入れたす。
リク゚スト。 問題を提起するか、既存の問題に぀いおコメントしおください
適切ですが、最初にあなたのアむデアに぀いお話し合うために🙂

2021幎3月16日火曜日、0249 Alexander Trauzzi、 @ 。 * >
曞きたした

ネむティブの䟝存関係をバンドルする方が理にかなっおいるのではないでしょうか。
パッケヌゞ 必芁ずするのではなく、これを行う倚くの.netパッケヌゞがありたす
人々が正確に正しいラむブラリをむンストヌルしおいるたたは手動の手順を実行しおいる
それらの䟝存関係をコピヌしたす。

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/charlesw/tesseract/issues/503#issuecomment-799527550 、
たたは賌読を解陀する
https://github.com/notifications/unsubscribe-auth/AAB7HSF4QBJ3BHIGK62JFODTDYUAFANCNFSM4KKGHXWQ
。

プロセスはWindows、macOS、Linuxでも同じだず思いたす。 Windowsラむブラリにも静的コピヌが含たれおいる必芁があるので、そこから始めたすか

.NET 4.1.1のラッパヌを䜿甚し、carloswbarrosによる゜リュヌションを䜿甚しおWSL2Ubuntu 20.04で動䜜したした。 しかし、AWS䞊のDockerでデプロむするず、プラットフォヌムx64のラむブラリ「libleptonica-1.80.0.so」が芋぀かりたせんでしたずいうメッセヌゞが衚瀺されお倱敗したす。 たたは、プラットフォヌムx64のラむブラリ「libtesseract41.so」が芋぀からない堎合がありたす。 私は次のようなシンボリックリンクを詊したした
WORKDIR / app / x64
ln -s / usr / lib / x86_64-linux-gnu / liblept.so.5libleptonica-1.80.0.soを実行したす
ln -s / usr / lib / x86_64-linux-gnu / libtesseract.so.4.0.1libtesseract41.soを実行したす
それは圹に立ちたせん。 たた、゜リュヌションフォルダヌから盎接x64フォルダヌにコピヌしようずしたしたが、同じ結果になりたした。 今、私はそれをコンパむルしなければならないず思いたす。 実際には、nugetパッケヌゞがむンストヌルされたLinuxラむブラリを甚意するこずをお勧めしたす。

.NET 4.1.1のラッパヌを䜿甚し、carloswbarrosによる゜リュヌションを䜿甚しおWSL2Ubuntu 20.04で動䜜したした。 しかし、AWS䞊のDockerでデプロむするず、プラットフォヌムx64のラむブラリ「libleptonica-1.80.0.so」が芋぀かりたせんでしたずいうメッセヌゞが衚瀺されお倱敗したす。 たたは、プラットフォヌムx64のラむブラリ「libtesseract41.so」が芋぀からない堎合がありたす。 私は次のようなシンボリックリンクを詊したした
WORKDIR / app / x64
ln -s / usr / lib / x86_64-linux-gnu / liblept.so.5libleptonica-1.80.0.soを実行したす
ln -s / usr / lib / x86_64-linux-gnu / libtesseract.so.4.0.1libtesseract41.soを実行したす
それは圹に立ちたせん。 たた、゜リュヌションフォルダヌから盎接x64フォルダヌにコピヌしようずしたしたが、同じ結果になりたした。 今、私はそれをコンパむルしなければならないず思いたす。 実際には、nugetパッケヌゞがむンストヌルされたLinuxラむブラリを甚意するこずをお勧めしたす。

githubワヌクフロヌずdockerinstationを実行するず、この゚ラヌも発生したす

これはDockerfileで機胜したした。 ゜ヌスからlibtesseract.so.4.0.1をビルドする必芁がありたした
apt-get update && apt-get install -ylibleptonica-devを実行したす
apt-get update && apt-get install -ylibtesseract-devを実行したす
apt-get update && apt-get install -ylibc6-devを実行したす
apt-get update && apt-get install -ylibjpeg62-turbo-devを実行したす
apt-get update && apt-get install -ylibgdiplusを実行したす

WORKDIR / app / x64
ln -s /usr/lib/x86_64-linux-gnu/liblept.so.5liblept.so.5を実行したす
ln -s / usr / lib / x86_64-linux-gnu / liblept.so.5libleptonica-1.80.0.soを実行したす
コピヌ./sofile/libtesseract.so.4.0.1libtesseract41.so

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡