簡體   English   中英

Tess4j不使用它的tessdata文件夾

[英]Tess4j doesn't use it's tessdata folder

我正在使用tess4j,Tesseract的java包裝器。 我也安裝了正常的Tesseract。 我不太確定tess4j是如何工作的,但由於它附帶了一個tessdata文件夾,我可以假設您將語言數據文件放在那里。 但是,tess4j僅在語言數據文件位於“真實”tessdata文件夾(tesseract附帶的文件夾,而不是tess4j)中時才起作用。 如果我刪除該文件夾,我收到此錯誤消息:

Error opening data file C:\Program Files\Tesseract-OCR\tessdata/jpn.trained
data
Please make sure the TESSDATA_PREFIX environment variable is set to the par
ent directory of your "tessdata" directory.
Failed loading language 'jpn'
Tesseract couldn't load any languages!
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x631259dc, pid=5108, tid=
10148
#
# JRE version: 7.0_06-b24
# Java VM: Java HotSpot(TM) Client VM (23.2-b09 mixed mode, sharing windows
-x86 )
# Problematic frame:
# C  [libtesseract302.dll+0x59dc]  STRING::strdup+0x467c
#
# Failed to write core dump. Minidumps are not enabled by default on client
 versions of Windows
#
# An error report file with more information is saved as:
# D:\School\Programs\OCRTest\v1.0.0\hs_err_pid5108.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

這是否意味着我需要安裝Tesseract才能使用tess4j? 為什么? 或者maby我的tess4j tessdata文件夾位於錯誤的位置(目前我的.java文件中,tess4j jars位於我設置了類路徑的lib文件夾中)。

讓您的TESSDATA_PREFIX environment variable指向Tess4j的tessdata文件夾。

通常在系統安裝期間設置這些變量,但您可以在此處找到解決方案: 如何從Java設置環境變量?

您必須在運行您的應用程序的系統上執行此操作,因為tessdata .dll依賴於此環境變量。

對於那些使用maven並且不喜歡使用全局變量的人來說,這對我有用:

File imageFile = new File("C:\\random.png");
Tesseract instance = Tesseract.getInstance();

//In case you don't have your own tessdata, let it also be extracted for you
File tessDataFolder = LoadLibs.extractTessResources("tessdata");

//Set the tessdata path
instance.setDatapath(tessDataFolder.getAbsolutePath());

try {
    String result = instance.doOCR(imageFile);
    System.out.println(result);
} catch (TesseractException e) {
    System.err.println(e.getMessage());
}

這里找到,用maven測試 - > net.sourceforge.tess4j:tess4j:3.4.1,鏈接也用1.4.1 jar

TESSDATA_PREFIX環境變量,如果已定義,將否決所有內容,包括由initsetDatapath設置的setDatapath ; 但是,當應用程序可以指定其tessdata文件夾的位置時,這可能會在不久的將來發生變化。

http://code.google.com/p/tesseract-ocr/issues/detail?id=938
https://groups.google.com/forum/#!topic/tesseract-ocr/bkJwI8WmxSw

也許你的主項目文件夾中沒有tessdata文件夾。 這個文件夾的所有正方體支持的語言(它包含文件.traineddata.bigrams.fold.lm.nn.params.size.word-freq擴展)如果你沒有的話,請按照下列步驟:

  1. github.com/tesseract-ocr/tessdata下載tessdata-master文件夾(從下載ZIP按鈕)
  2. 解壓縮主項目文件夾中tessdata-master.zip文件的內容
  3. tessdata-master重命名為tessdata
  4. 運行您的java項目並測試它是否有效。 至少這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM