Làm cách nào để chọn giữa Tesseract và OpenCV? [đóng cửa]


94

Gần đây tôi đã xem qua TesseractOpenCV . Có vẻ như Tesseract là một công cụ OCR chính thức và OpenCV có thể được sử dụng như một khuôn khổ để tạo một ứng dụng / dịch vụ OCR.

Tôi đã thử sử dụng Tesseract trên một số hình ảnh của mình và độ chính xác của nó có vẻ khá. Sau đó, tôi đã xem qua một hướng dẫn rất đơn giản về cách sử dụng OpenCV để thực hiện OCR bằng Python và rất ấn tượng. Trong vài phút, tôi đã hoàn thành việc huấn luyện hệ thống và độ chính xác của nó rất tốt. Nhưng tất nhiên, thực hiện cách tiếp cận này có nghĩa là tôi cần đào tạo hệ thống của mình một cách rộng rãi bằng cách sử dụng một tập hợp đào tạo lớn.

Các câu hỏi cụ thể của tôi như sau:

  • Làm cách nào để chọn giữa Tesseract và sử dụng OpenCV để tạo ứng dụng OCR tùy chỉnh?
  • Có bộ dữ liệu đào tạo có sẵn cho Tesseract cho các ngôn ngữ khác nhau. OpenCV có điều gì đó tương tự để tôi không cần phải bắt đầu để đạt được OCR không?
  • Cái nào tốt hơn cho một ứng dụng thương mại muốn trở thành?

Bất kỳ đề xuất?


8
Các câu trả lời bên dưới thực sự tuyệt vời, nhưng là một câu trả lời đã làm việc với OCR, tôi có thể nói với bạn rằng chất lượng nhận dạng trong Tesseract thấp hơn mong đợi của người dùng ứng dụng thương mại. Tesseract là tuyệt vời, nhưng OCR thì khó - những thứ như đào tạo trực tuyến hoặc các cải tiến đang diễn ra là rất nhiều ... vẫn đang nghiên cứu. Google, nhà tài trợ lớn đằng sau TS gần đây, đã quyết định xây dựng công cụ của riêng mình - OCROpus. Và mặc dù nó đã hứa sẽ mở nguồn nó, nhưng công cụ nhận dạng cốt lõi vẫn chưa có sẵn - họ chỉ xuất bản một khuôn khổ - đó là một api để tesseract.
Sam

3
@vasile: Đó là rất nhiều thông tin. Tôi không biết về OCROpus. Cảm ơn bạn. Bạn có bất kỳ đề xuất nào về các lựa chọn thay thế không nếu mục tiêu cuối cùng của tôi là viết một danh thiếp OCR (hoặc giả sử, một danh thiếp ghi biên lai trạm xăng giống như tôi đã liên kết: upload.wikimedia.org/wikipedia/vi/3/34/… )? Tôi hỏi bởi vì tôi chỉ tò mò rằng vô số ứng dụng di động sử dụng để đạt được điều này. Tôi không ngại thực hiện OCR ở phía máy chủ. Tôi đã bị cám dỗ để sử dụng OpenCV sau khi nhìn thấy bản demo này mát mẻ: youtube.com/watch?v=OkcOfS1lTxs
Truyền thuyết

6
Có một số công cụ OCR thương mại, chỉ cần google OCR accuracy testsvà bạn sẽ tìm thấy một số biểu đồ. Và nói về ứng dụng di động, hầu hết chúng đều sử dụng tesseract. Nhưng nếu bạn bận tâm tải xuống một số trong số chúng, bạn sẽ thấy rằng kết quả hơi khác so với những gì đã hứa. Họ thường tạo video demo trong một môi trường được kiểm soát cẩn thận và đăng lên youtube, nhưng ngược lại, nếu bạn quét một trang / công thức / thẻ / bất cứ thứ gì, bạn sẽ nhận được một số kết quả hài hước.
Sam

1
@vasile: Cảm ơn bạn. Một cái gì đó khiến tôi bận rộn cho tối nay. Thực sự đánh giá cao thời gian của bạn.
Huyền thoại

Câu trả lời:


77
  • Tesseract là một công cụ OCR. Nó được sử dụng, làm việc và được Google tài trợ đặc biệt để đọc văn bản từ hình ảnh, thực hiện phân đoạn tài liệu cơ bản và hoạt động trên các đầu vào hình ảnh cụ thể (một từ, dòng, đoạn, trang, từ điển hạn chế, v.v.).

  • Mặt khác, OpenCV là một thư viện thị giác máy tính bao gồm các tính năng cho phép bạn thực hiện một số trích xuất tính năng và phân loại dữ liệu. Bạn có thể tạo một trình phân loại và phân loại chữ cái đơn giản thực hiện OCR cơ bản, nhưng nó không phải là một công cụ OCR rất tốt (tôi đã tạo một công cụ bằng Python từ đầu. Nó thực sự không chính xác cho đầu vào sai lệch so với dữ liệu đào tạo của bạn).

Nếu bạn muốn hiểu cơ bản về mức độ khó của OCR, hãy thử OpenCV. Tesseract dành cho OCR thực .


3
Điều đó phụ thuộc vào hình ảnh đầu vào của bạn. Tesseract hoạt động tốt nhất khi các chữ cái sắc nét, theo hàng ngang, cách đều nhau, không nối và có màu đen trắng hoàn hảo. Tôi đã mày mò trong cộng đồng quét / bảo quản sách DIY trong khoảng một năm và làm việc trên phần mềm trong thời gian rảnh để dễ dàng thực hiện quy trình. Phần mềm tốt nhất hiện có (thương mại hoặc không) để xử lý hậu kỳ bất kỳ hình ảnh có văn bản nào là Scan Tailor . Nó có một số tùy chọn CLI, nhưng nếu bạn dành chút thời gian để xem nó hoạt động như thế nào, thì nó khá tuyệt vời.
Máy xay sinh tố

2
Tôi đã làm việc trên mã nguồn của Scan Tailor một chút và nó không sử dụng OpenCV nội bộ, nhưng nhiều thuật toán đã được tạo có thể được viết lại bằng các chức năng của OpenCV thực sự dễ dàng. Nếu hình ảnh của bạn không bị cong vênh và không bị suy giảm chất lượng, bạn thực sự chỉ cần thực hiện mã hóa nhị phân thích ứng và một số thao tác xử lý đơn giản trước khi đưa hình ảnh của bạn vào Tesseract.
Máy xay sinh tố

1
Về câu hỏi của bạn, tôi vừa thử nghiệm một số hình ảnh đầu vào ngẫu nhiên ngày hôm qua. Tôi đã thử một biên lai từ một trạm xăng: upload.wikimedia.org/wikipedia/vi/3/34/… Nó nhận ra 0là một 8(trong tổng số $ 20,00). Tôi thừa nhận rằng chữ số đó rất khó giải mã đối với tôi nhưng tôi không chắc có thể làm gì khác để điều chỉnh Tesseract với những tình huống này hoặc có thể giới thiệu một thành phần học tập nếu tôi có cơ sở người dùng hoạt động.
Truyền thuyết

5
Tesseract được đào tạo để đọc các bộ phông chữ cụ thể. Những chữ cái khối vuông đó không phải là một trong số chúng. Bạn sẽ phải trình bày Google một sự hy sinh động vật và cố gắng đào tạo Tesseract mình: code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3
Máy xay sinh tố

1
Ngoài ra, trước khi bạn bắt tay vào viết một công cụ OCR tùy chỉnh để đọc những chữ cái đó, đừng mong đợi nó chính xác. Tôi đã viết một bài để tự động hóa Wheel of Fortune và các hình ảnh mẫu (ảnh chụp màn hình của một trò chơi trực tuyến) là JPEG. Các hiện vật từ nén JPEG đủ để làm hỏng bộ phân loại hình ảnh trừ khi tôi cung cấp khoảng 10-20 hình ảnh mẫu của mỗi ký tự.
Máy xay sinh tố

65

Tôi là tác giả của hướng dẫn nhận dạng chữ số mà bạn đã đề cập, và tôi muốn nói rằng, đó không phải là cách thay thế cho tesseract.

Tesseract là một công cụ OCR thực sự tốt, có thể là công cụ OCR OpenSource tốt nhất.

Hướng dẫn bạn đã đề cập chỉ là một thử, để hiểu cách làm việc đơn giản nhất của OCR.

Vì vậy, nếu bạn đang tìm kiếm ứng dụng OCR, tôi khuyên bạn nên sử dụng OpenCV để xử lý trước hình ảnh và sau đó áp dụng công cụ tesseract.


1
+1 Cảm ơn bạn. Trước hết, cảm ơn bạn đã hướng dẫn :) Đó là một bài đọc thực sự thú vị. Bạn có biết bất kỳ tài liệu tham khảo / hướng dẫn nào về cách sử dụng OpenCV cùng với Tesseract không? Không nói về giao diện nhưng kiểu biến đổi hình ảnh hoặc xử lý trước cần được thực hiện để cải thiện độ chính xác của Tesseract?
Huyền thoại

2
Chỉ muốn nói rằng, mặc dù Tesseract là một công cụ OCR tốt so với những công cụ khác, nhưng nó vẫn khá không chính xác, tôi đã có khoảng 40% tỷ lệ thành công trong việc nhận dạng văn bản chính xác. Hy vọng rằng nó sẽ tốt hơn trong một vài năm.
GangstaGraham

4
@GangstaGraham Bạn chỉ cần đào tạo tesseract và bạn có thể nhận được kết quả tốt hơn trong vài giờ hoặc vài ngày chứ không phải năm. opensource.newmediaist.com/tesseract-training.html
valentt

1
Tôi sử dụng PyTesseract để trích xuất văn bản theo thời gian thực. Nó hoạt động tốt trên PC Linux nhưng rất chậm trên môi trường Raspberry Pi ... Có cách nào để cài đặt phiên bản nhẹ không? Ví dụ: chỉ xử lý các chữ số và chữ viết hoa của bảng chữ cái tiếng Anh?
Yuriy Chernyshov

9

Cả hai có thể bổ sung cho nhau. Nếu bạn đọc bài báo trên OpenCV: https://github.com/tesseract-ocr/docs/blob/master/tesseracticdar2007.pdf

Nó nhấn mạnh rằng "Vì HP đã phát triển độc lập công nghệ phân tích bố cục trang được sử dụng trong các sản phẩm, (và do đó không được phát hành cho mã nguồn mở) nên Tesseract không bao giờ cần phân tích bố cục trang của riêng mình. Do đó, Tesseract giả định rằng đầu vào của nó là một hình ảnh nhị phân với vùng văn bản đa giác tùy chọn được xác định. "

Loại tác vụ này có thể được thực hiện bởi OpenCV và hình ảnh kết quả được giao cho Tesseract. Bạn có thể tìm thấy mẫu của loại mã này trong đại diện Git: https://github.com/Itseez/opencv_contrib/tree/master/modules/text/samples Các mẫu sử dụng API Tesseract để chuyển đổi hình ảnh sang văn bản.


3

OpenCV là một thư viện dành cho CV , được sử dụng để phân tích và xử lý hình ảnh nói chung. Tesseract là một thư viện dành cho OCR , là một tập hợp con CV chuyên biệt dành riêng cho việc trích xuất văn bản từ hình ảnh.

Từ OpenCV.org

..... được sử dụng để phát hiện và nhận dạng khuôn mặt, xác định đối tượng, phân loại hành động của con người trong video, theo dõi chuyển động của máy ảnh, theo dõi đối tượng chuyển động, trích xuất mô hình 3D của đối tượng, tạo ra đám mây điểm 3D từ máy ảnh âm thanh nổi, ghép các hình ảnh lại với nhau để tạo ra độ cao Hình ảnh có độ phân giải của toàn bộ cảnh, tìm các hình ảnh tương tự từ cơ sở dữ liệu hình ảnh, loại bỏ mắt đỏ khỏi hình ảnh được chụp bằng đèn flash, theo dõi chuyển động của mắt, nhận dạng phong cảnh và thiết lập các điểm đánh dấu để phủ nó bằng thực tế tăng cường, v.v.

Từ Tesseract Github :

..... có thể được sử dụng trực tiếp, hoặc (dành cho lập trình viên) sử dụng API để trích xuất văn bản được đánh máy, viết tay hoặc in từ hình ảnh. Nó hỗ trợ nhiều loại ngôn ngữ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.