2013-08-07 13 views
7

Tôi đang sử dụng tess4j, trình bao bọc java của Tesseract. Tôi cũng đã cài đặt Tesseract bình thường. Tôi không chắc chắn làm thế nào tess4j có nghĩa là để làm việc, nhưng kể từ khi nó đi kèm với một thư mục tessdata, tôi có thể giả định rằng bạn sẽ đặt các tập tin dữ liệu ngôn ngữ ở đó. Tuy nhiên, tess4j chỉ hoạt động nếu các tệp dữ liệu ngôn ngữ nằm trong thư mục tessdata "thực" (một tệp đi kèm với tesseract, không phải tess4j). Nếu tôi xóa thư mục đó, tôi nhận được thông báo lỗi này:Tess4j không sử dụng thư mục tessdata của nó

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. 
# 

Điều này có nghĩa là tôi cần phải cài đặt Tesseract để sử dụng tess4j? Tại sao? Hoặc maby tess4j tessdata thư mục của tôi là ở vị trí sai (Nó hiện đang với các tập tin .java của tôi, các lọ tess4j nằm trong một thư mục lib mà tôi đã thiết lập một classpath).

+0

điều gì sẽ xảy ra nếu bạn cho phép 'biến môi trường TESSDATA_PREFIX' trỏ đến thư mục tessdata của Tess4J? – sschrass

+1

Điều đó khắc phục được sự cố của tôi. Tôi cần phải trở nên quen với các biến môi trường để tránh những khó khăn này. Một câu hỏi nữa: mọi thứ vẫn hoạt động được nếu bạn chạy chương trình trên một máy tính khác có thể không có đường dẫn? –

Trả lời

3

Cho phép TESSDATA_PREFIX environment variable trỏ tới thư mục tessdata của Tess4j của bạn.

Thông thường, bạn thiết lập các biến trong một cài đặt trên hệ thống, nhưng bạn có thể tìm một giải pháp ở đây: How do I set environment variables from Java?

Bạn phải làm điều đó trên hệ thống chạy ứng dụng của bạn vì tessdata .dll s phụ thuộc vào này biến môi trường.

+0

setDatapath (xem câu trả lời từ nguyenq), có thể phá vỡ các thiết lập của biến môi trường, đó là mát mẻ.Nhưng như nguyenq đã nói, một biến env được định nghĩa sẽ đè lên nó, và điều đó không mát mẻ: '( – sschrass

0

Có lẽ bạn không có thư mục tessdata trong thư mục chính của dự án của bạn. Thư mục này có tất cả Tesseract hỗ trợ ngôn ngữ (nó có chứa các tập tin với .traineddata, .bigrams, .fold, .lm, .nn, .params, .size.word-freq phần mở rộng) Nếu bạn không có nó, hãy làm theo các bước sau:

  1. Tải về thư mục tessdata bị Thạc sỹ từ github.com/tesseract-ocr/tessdata (từ nút download ZIP)
  2. Giải nén nội dung của tessdata-master.zip tập tin trong thư mục chính của dự án của bạn
  3. Đổi tên tessdata-master đến tessdata
  4. Chạy dự án java của bạn và kiểm tra xem nó có hoạt động hay không. Ít nhất là điều này làm việc cho tôi.
0

Đối với những người sử dụng maven và không thích sử dụng các biến toàn cầu, điều này làm việc cho tôi:

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()); 
} 

tìm thấy here, thử nghiệm với maven -> net.sourceforge.tess4j: tess4j: 3.4 .1, cũng sử dụng liên kết 1.4.1 jar

Các vấn đề liên quan