2012-04-18 23 views
9

Tôi muốn phát hiện vùng văn bản từ hình ảnh như là một bước tiền xử lý cho động cơ OCR tesseract, động cơ hoạt động tốt khi đầu vào chỉ là văn bản nhưng khi hình ảnh đầu vào chứa nội dung Nontext bị rơi, vì vậy tôi chỉ muốn phát hiện nội dung văn bản , bất kỳ ý tưởng làm thế nào để làm điều đó sẽ hữu ích, cảm ơn.Cách phát hiện Vùng văn bản từ hình ảnh?

+1

Tôi sẽ chuyển sang giải pháp xử lý hình ảnh. Hãy thử google để xóa các kỹ thuật nền. –

+0

rất khó để hiểu vấn đề của bạn mà không có hình ảnh ví dụ. Vui lòng tải lên hình ảnh trong imageshack.us và cung cấp liên kết tại đây. –

+0

ok, đây là liên kết của một hình ảnh mẫu tôi muốn loại bỏ khu vực không phải văn bản từ http://imageshack.us/photo/my-images/171/img0052ir.jpg/ nhưng tôi nghĩ rằng tesseract quản lý tất cả các quá trình trên nó do đó chúng tôi sẽ không quan tâm đến hình ảnh trông như thế nào. – chostDevil

Trả lời

7

Hãy xem bounding box kỹ thuật này chứng minh với mã OpenCV:

Input:

enter image description here

xói mòn:

enter image description here

quả:

enter image description here

+0

Còn vùng Non Text trong hình ảnh được quét, (tức là khi tôi xói mòn hình ảnh đầu vào, các vùng văn bản không trong hình ảnh đầu vào có bị bỏ quên không?) – chostDevil

+0

Khi bạn có một hộp giới hạn, bạn có thể trích xuất nội dung của nó thành hình ảnh mới và quên đi mọi thứ khác không nằm trong hộp. Đối với tác vụ này, hãy tìm kiếm diễn đàn của chúng tôi cho ** Region Of Interest ** hoặc ** ROI ** trong thẻ OpenCV. – karlphillip

+0

nếu có bất kỳ kỹ thuật chính xác hơn điều này xin vui lòng cho tôi biết, và cảm ơn rất nhiều :) – chostDevil

2

Vâng, tôi không nổi kinh nghiệm trong việc xử lý hình ảnh, nhưng tôi hy vọng tôi có thể giúp bạn với cách tiếp cận lý thuyết của tôi.

Trong hầu hết các trường hợp, văn bản được tạo thành song song, các hàng horisontal, trong đó khoảng cách giữa các hàng sẽ là pixel nền. Điều này có thể được sử dụng để giải quyết vấn đề này. Vì vậy, nếu bạn soạn mỗi cột pixel trong hình ảnh, bạn sẽ nhận được hình ảnh rộng 1 pixel làm đầu ra. Khi hình ảnh đầu vào chứa văn bản, đầu ra sẽ rất có khả năng là một mẫu tuần hoàn, trong đó các vùng tối được theo sau bởi các vùng sáng hơn nhiều lần. Các "nhóm" pixel tối hơn này sẽ cho biết vị trí của nội dung văn bản, trong khi các nhóm "sáng hơn" sẽ cho biết khoảng cách giữa các hàng riêng lẻ. Có thể bạn sẽ thấy rằng các khu vực sáng hơn sẽ nhỏ hơn nhiều so với các khu vực khác. Văn bản phổ biến hơn nhiều so với bất kỳ phần tử hình ảnh nào khác, vì vậy nó phải dễ dàng tách biệt.

Bạn phải triển khai quy trình để phát hiện các lần lặp lại định kỳ này. Một khi kịch bản có thể xác định rằng hình ảnh đầu vào có những đặc điểm này, có khả năng cao là nó chứa văn bản. (Tuy nhiên, cách tiếp cận này không thể phân biệt giữa văn bản thực tế và sọc horisontal đơn giản ...)

Bước tiếp theo, bạn phải tìm cách xác định đường biên của đoạn văn. Tôi đang suy nghĩ về một thuật toán khá giả, phù thủy sẽ chia hình ảnh đầu vào thành các sọc nhỏ hơn, hẹp (50-100 px), và nó sẽ kiểm tra những khu vực này một cách riêng biệt. Sau đó, nó sẽ so sánh các kết quả này để xây dựng một bản đồ của các khu vực có thể chứa đầy văn bản. Phương pháp này sẽ không chính xác như vậy, nhưng nó có thể không làm phiền hệ thống OCR.

Và cuối cùng, bạn cần sử dụng bản đồ văn bản để chạy OCR chỉ trên các vị trí mong muốn.

Ở phía bên kia, phương pháp này sẽ thất bại nếu văn bản đầu vào được xoay quá ~ 3-5 độ. Có một sự rút lui khác, nếu bạn chỉ có một vài hàng, thì việc tìm kiếm mẫu của bạn sẽ rất không đáng tin cậy. Nhiều hàng hơn, chính xác hơn ...

Trân trọng, G.

2

Tôi mới làm quen với lưu lượng truy cập.com, nhưng tôi đã viết một câu trả lời cho một câu hỏi tương tự như câu hỏi này có thể hữu ích cho bất kỳ độc giả nào chia sẻ câu hỏi này. Cho dù câu hỏi có thực sự là một bản sao hay không, vì câu hỏi này là thứ nhất, tôi sẽ để lại cho người khác. Nếu tôi nên sao chép và dán câu trả lời đó ở đây, hãy cho tôi biết. Tôi cũng tìm thấy câu hỏi này đầu tiên trên google chứ không phải là một trong những tôi đã trả lời vì vậy điều này có thể có lợi cho nhiều người hơn với một liên kết. Đặc biệt là vì nó cung cấp các cách khác nhau để đi về nhận được các khu vực văn bản. Đối với tôi, khi tôi nhìn lên câu hỏi này, nó không phù hợp với vấn đề của tôi.

Detect text area in an image using python and opencv