2012-04-17 33 views
8

Tôi đã hy vọng một người nào đó có thể cho tôi biết tại sao Tesseract của tôi gặp khó khăn khi nhận ra một số hình ảnh có chữ số và nếu có điều gì đó tôi có thể làm. Mọi thứ đang hoạt động theo thử nghiệm, và vì nó chỉ là chữ số tôi cần, tôi nghĩ tôi có thể quản lý với mẫu tiếng Anh cho đến khi tôi phải bắt đầu với màn hình 7segmented.Khó nhận dạng chữ số trong Tesseract - android

Mặc dù tôi gặp nhiều rắc rối với hình ảnh được thêm vào, tôi muốn biết liệu tôi có nên bắt đầu làm việc trên các thuật toán nhận dạng của riêng mình hay không. có ai biết giới hạn của Tesseract ở đâu không?

những điều đã thử: cố gắng đặt psm thành one_line, one_word, one_char (và cắt hình ảnh). Với one_line và one_word không có thay đổi đáng kể. với one_char nó đã nhận ra một chút tốt hơn, nhưng đôi khi, do khoảng cách lớn nó gắn thêm một số cho nó, mà sau đó hơi say nó lên, nếu bạn nhìn vào hình ảnh đính kèm zero.jpg sau đó nó dẫn đến 04. Tôi cũng đã cố gắng để tự thực hiện việc binarization, điều này dẫn đến sự công nhận kém hơn và rất tiêu thụ tài nguyên. Tôi đã cố gắng đảo ngược hình ảnh, điều này không tạo ra sự khác biệt nào cho tesseract.

Tôi đã đính kèm những hình ảnh tôi cần, trong số những thứ khác, để được xử lý.

Giải thích về những hình ảnh:

decodethisimage_seven là một hình ảnh mà Tesseract không gặp khó khăn nhận ra, mặc dù nó đã được thực hiện bằng lời nói cho các tiện nghi của việc xây dựng một ứng dụng xung quanh một hình ảnh làm việc.

decodethisimage_eight là hình ảnh thực tế khớp với image_seven. Nhưng nó không thể nhận ra điều này.

decodethisimage_four2 là một hình ảnh khác tôi muốn nó nhận ra, và có tôi biết nó không thể được skrewed, và tôi đã unskrew (nghĩ rằng skrew là thuật ngữ ở đây == "straighting") nó khi thử nghiệm.

+0

skrew = skew nice :). Ngoài ra, bộ công cụ hình ảnh có thể giảm tiếng ồn, làm sắc nét, và những gì không. Điều đó có thể giúp –

Trả lời

2

tôi biết một số tùy chọn có thể giúp bạn:

  1. Thêm thêm không gian giữa biên giới hình ảnh và văn bản. Tesseract sẽ làm việc khủng khiếp nếu văn bản trong hình ảnh được đặt ở cạnh.
  2. Sao chép hình ảnh của bạn. Ví dụ: nếu bạn đang thực hiện OCR trên một từ 'foobar', hãy sao chép hình ảnh và gửi 'foobar foobar foobar foobar foobar' để tesseract, kết quả sẽ tốt hơn.
  3. Google cho font trainingimage binarization để khắc phục.

Hãy nhớ rằng camera tích hợp trong thiết bị di động chủ yếu tạo ra hình ảnh chất lượng thấp (blured, noised, skewed, v.v.) Bản thân OCR là một quá trình comsuming tài nguyên và nếu bạn thêm tiền xử lý hình ảnh xứng đáng vào đó, thiết bị di động cấp thấp và trung bình (có khả năng có Android) có thể phải đối mặt với hiệu suất chậm bất ngờ hoặc thậm chí thiếu tài nguyên. Đó là OK cho các dự án miễn phí/nghiên cứu, nhưng nếu bạn đang lập kế hoạch cho một ứng dụng thương mại - hãy xem xét sử dụng một SDK tốt hơn.

Có xem xét câu hỏi này để biết chi tiết: OCR for android

+0

Cảm ơn bạn đã nhập, tôi sẽ thử thách nó. Liên quan đến phân khúc trung bình ở mức trung bình giữa điện thoại di động và trung bình. có ít nhất 3mpix cam, và điều đó là đủ, mặc dù tự động lấy nét là một vấn đề nó có thể quản lý được. để tránh hình ảnh bị lệch, tôi đặt hình chữ nhật rất hạn chế làm lớp phủ trên màn hình của tôi, vì vậy đó là loại tránh được. Nhưng tôi đồng ý rằng nó có thể là nặng cho điện thoại, tôi sẽ không nhớ nó chạy trên một máy chủ, tôi chỉ cần biết rằng nó hoạt động đầu tiên, mà tôi havent thu được chưa: -/ –

+0

Mặc dù bạn có bất kỳ ý tưởng làm thế nào để công bố và thêm khung hình vào ảnh? Hãy bắt đầu tìm kiếm xung quanh cho nó, nếu bạn có bất kỳ trải nghiệm nào với nó allready :) –

+0

1 và 2 không hoạt động. Im tung tesseract, cố gắng làm việc với javaocr thay vì –

1

Bạn có thể cung cấp cho javaocr thử (http://sourceforge.net/projects/javaocr/, vâng, tôi là nhà phát triển)

Therre là không phát hành offocial mặc dù, và bạn sẽ phải tìm kiếm nguồn (tin tốt: có mẫu android hoạt động bao gồm mẫu, ứng dụng huấn luyện viên ngoại tuyến và ứng dụng nhận dạng)

Nếu bạn chỉ có một phông chữ, bạn có thể nhận được kết quả khá tốt với nó (tôi đã đạt đến tỷ lệ nhận dạng 99,96) cùng một phông chữ)

PS: đó là Java thuần túy và sử dụng các khoảnh khắc bất biến để thực hiện khớp (do đó không có vấn đề gì với việc chia tỷ lệ và xoay vòng). Ngoài ra còn có hiệu ứng binarisation khá hiệu quả.

Nhìn thấy nó trong hành động:

https://play.google.com/store/apps/details?id=de.pribluda.android.ocrcall&feature=search_result#?t=W251bGwsMSwxLDEsImRlLnByaWJsdWRhLmFuZHJvaWQub2NyY2FsbCJd

+0

Đã thử ứng dụng của bạn, không nhận ra bất kỳ số/hình ảnh nào của tôi -: –

+0

Ứng dụng này được đào tạo cho văn bản màu đen trên nền trắng. Trong trường hợp bạn cần phủ định, bạn có thể thử mẫu android trong quá trình javaocr (chỉ cần sửa đổi một chút là cần thiết trong quá trình binarisation để làm việc với âm bản) PS: bạn có thể đăng ảnh chụp màn hình kết quả regcognition không? Sau đó, tôi maz có thể cung cấp cho một số gợi ý nhiều hơn –

+0

Không cần nó là bởi vì tôi là tiêu cực :-) –

2

Tesseract không làm segmentation cho bạn. Tesseract sẽ làm một hình tròn của hình ảnh trước bản ngã tesseract thực tế. Sau khi đập, có thể có một số cạnh, đồ tạo tác vẫn còn trong hình ảnh.

Cố gắng sửa đổi hình ảnh của bạn theo cách thủ công thành màu đen và trắng và xem những gì tesseract trả về dưới dạng đầu ra.

Cố gắng ngưỡng (tự động) hình ảnh của bạn và xem những gì tesseract trả về dưới dạng đầu ra. Đầu ra của đập có thể là quá xấu gây ra tesseract để cung cấp cho sản lượng xấu.

Hình ảnh thứ 4 của bạn có thể sẽ không thành công do dập nổi (bạn có 3 màu: nền đen, nền xám và chữ trắng) và ngưỡng có thể nằm giữa (nền đen, nền xám).

Thông thường Tesseract muốn hình ảnh đen trắng đẹp mắt. Có thể cần xử lý trước hình ảnh của bạn để có kết quả tốt hơn.

Đối với hình ảnh đầu tiên của bạn (với kết quả "04"), hãy thử xem kết quả hộp (char + tọa độ của hộp chứa char được công nhận). "0" có thể là một đồ tạo tác nhỏ - giống như các đốm sáng 4 x 4 pixel.

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