2009-12-11 28 views
6

Tại nơi làm việc của tôi, đôi khi tôi phải lấy một số mã nguồn đã in và tự nhập mã nguồn vào trình soạn thảo văn bản. Đừng hỏi tại sao.Cần OCR tốt cho danh sách mã nguồn được in, có ý tưởng nào không?

Rõ ràng là gõ nó lên mất một thời gian dài và luôn luôn thêm thời gian để gỡ lỗi gõ lỗi (oops bỏ lỡ một "$" dấu hiệu đó).

Tôi quyết định thử một số giải pháp OCR như:

  • Microsoft Document Imaging - đã xây dựng trong OCR
    • Kết quả: Bỏ lỡ tất cả các khoảng trắng hàng đầu, bỏ qua tất cả các dấu gạch dưới, giải thích rất nhiều các dấu chấm câu ký tự không đúng.
    • Kết luận: Chậm hơn việc nhập mã theo cách thủ công.
  • Nhiều web trực tuyến OCR apps
    • Kết quả: tương tự hoặc tệ hơn Microsoft Document Imaging
    • Kết luận: Chậm hơn so với nhập thủ công mã.

tôi cảm thấy như mã nguồn sẽ rất dễ dàng để OCR cho phông chữ là chữ serif và sans monospace.

Có ai trong số các bạn đã tìm thấy giải pháp OCR tốt hoạt động tốt trên mã nguồn không?

Có lẽ tôi chỉ cần một giải pháp OCR tốt hơn (không nhất thiết là mã nguồn cụ thể)?

Trả lời

5

Với OCR, hiện nay có ba lựa chọn:

  • Abbee FineReaderOminPage. Cả hai đều là các sản phẩm thương mại có giá trị ngang hàng khi nói đến các tính năng và kết quả OCR. Tôi không thể nói nhiều về OmniPage nhưng FineReader không hỗ trợ đọc mã nguồn (ví dụ, nó có một thư viện ngôn ngữ Java).
  • Động cơ OSS OCR tốt nhất là tesseract. Nó khó sử dụng hơn nhiều, có thể bạn sẽ cần đào tạo nó cho ngôn ngữ của bạn.

Tôi hiếm khi làm OCR nhưng tôi thấy rằng chi tiêu $ 150 trên phần mềm thương mại có trọng lượng trong thời gian lãng phí cho đến nay.

+0

Tôi đã thử khắc phục. Nó không thành công khi tôi tải nó lần đầu tiên. Readme trực tuyến chỉ định rằng nó không đi kèm với bất kỳ dữ liệu đào tạo nào. Tôi đã tải xuống dữ liệu đào tạo tiếng Anh từ trang web và được gỡ bỏ vào thư mục tessdata. NHƯNG sau đó nó vẫn phàn nàn về "không thể tìm thấy eng.unicharset". Làm thế nào tôi messing này lên? –

+2

Xem ý tôi là gì? Tesseract chỉ miễn phí nếu thời gian của bạn không mất phí. Nhưng bạn có thể đăng câu hỏi trong nhóm người dùng tesseract. Họ thân thiện ở đó và đầu vào của bạn sẽ giúp làm cho nó dễ dàng hơn cho người tiếp theo để thiết lập con thú này lên. –

+0

@Aaron Digulla, thưa bạn có thể chia sẻ cho tôi một số thư viện OCR có phạm vi từ $ 150 đến $ 500, –

1

in văn bản vs viết tay là thường dễ dàng hơn cho OCR, tuy nhiên tất cả phụ thuộc vào nguồn hình ảnh của bạn, tôi thường thấy rằng chụp ở định dạng PNG, với màu sắc giảm (màu xám là tốt nhất) với một số ngẫu nhiên bằng tay (loại bỏ bất kỳ hình ảnh tiếng ồn do quét vv) hoạt động tốt nhất.

Hầu hết OCR đều tương tự về hiệu suất và độ chính xác. OCR với khả năng huấn luyện/sửa chữa sẽ là tốt nhất.

1

Nói chung tôi thấy rằng FineReader cho kết quả rất tốt. Thông thường tất cả các sản phẩm đều có bản dùng thử. Hãy thử càng nhiều càng tốt.

Bây giờ, chương trình mã nguồn có thể được khôn lanh:

  • khoảng trắng hàng đầu: có thể là một mã bưu điện quá trình in khá có thể giúp
  • dấu gạch dưới và dấu chấm câu: có thể là một sản phẩm tốt có thể được đào tạo cho
  • rằng
1

OCRopus cũng là một tùy chọn nguồn mở tốt. Nhưng giống như Tesseract, có một đường cong học tập khá dốc để sử dụng và tích hợp nó một cách hiệu quả.

1

Hãy thử http://www.free-ocr.com/. Tôi đã sử dụng nó để khôi phục mã nguồn từ một màn hình lấy khi IDE của tôi treo trong một phiên biên tập mà không cần cảnh báo. Nó rõ ràng phụ thuộc vào font bạn đang sử dụng trong trình soạn thảo (tôi sử dụng Courier New 10pt trong Delphi). Tôi đã cố gắng sử dụng Google Documents, sẽ OCR một hình ảnh khi bạn tải lên - trong khi Google Documents là khá tốt trên các tài liệu được quét, nó không thành công trên nguồn Pascal vì một lý do nào đó.

Một ví dụ về FreeOCR tại nơi làm việc: hình ảnh đầu vào:

image uploaded

tặng này:

begin 
FileIDToDelete := FolderToClean + 5earchRecord.Name ; 
Inc (TotalFilesFound) ; 
if (DeleteFile (PChar (FileIDToDelete))) then 
begin 
Log5tartupError (FormatEx (‘%s file %s deleted‘, [Annotation, Fi eIDToDelete])) ; 
Inc (TotalFilesDeleted) ; 
end 
else 
begin 
Log5tartupError (FormatEx (‘Error deleting %s file %s‘, [Annotat'on, FileIDToDelete])) ; 
Inc (TotalFilesDeleteErrors) ; 
end ; 
end ; 
FindResult := 5ysUtils.FindNext (5earchRecord) ; 
end ; 

để thay thế thụt đầu dòng được phần lớn các tác phẩm, sau đó thay đổi tất cả 5 's lên chữ hoa S. Nó cũng bị nhầm lẫn bởi đường thẳng đứng ở mốc 80 cột. May mắn nhất hầu hết các lỗi sẽ được chọn bởi trình biên dịch (ngoại trừ những sai sót bên trong các chuỗi được trích dẫn).

Đó là một FreeOCR đáng xấu hổ không có tùy chọn "mã nguồn", nơi không gian trắng được coi là quan trọng.

Mẹo: Nếu nguồn của bạn bao gồm đánh dấu cú pháp, hãy đảm bảo bạn lưu hình ảnh thành màu xám trước khi tải lên.

3

Hai tùy chọn mới tồn tại ngày nay (năm sau khi câu hỏi được hỏi):

1.)

Windows 10 đi kèm với một động cơ OCR từ Microsoft.

Đó là trong không gian tên:

Windows.Media.Ocr.OcrEngine 

https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.ocr

Ngoài ra còn có một ví dụ trên Github:

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/OCR

Bạn cần hoặc VS2015 để biên dịch công cụ này. Hoặc nếu bạn muốn sử dụng phiên bản Visual Studio cũ hơn, bạn phải gọi nó qua COM truyền thống, sau đó đọc bài viết này trên Codeproject: http://www.codeproject.com/Articles/262151/Visual-Cplusplus-and-WinRT-Metro-Some-fundamentals

Chất lượng OCR rất tốt. Tuy nhiên, nếu văn bản quá nhỏ, bạn phải khuếch đại hình ảnh trước đây. Bạn có thể tải xuống mọi ngôn ngữ tồn tại trên thế giới thông qua Windows Update - ngay cả đối với chữ viết tay!


2.)

Một tùy chọn khác là sử dụng thư viện OCR từ Office. Nó là một DLL COM. Nó có sẵn trong Office 2003, 2007 và Vista, nhưng đã bị loại bỏ trong Office 2010.

http://www.codeproject.com/Articles/10130/OCR-with-Microsoft-Office

Những bất lợi là mọi cài đặt Office đi kèm với hỗ trợ cho vài ngôn ngữ. Ví dụ: một văn phòng Tây Ban Nha cài đặt hỗ trợ cho tiếng Tây Ban Nha, tiếng Anh, tiếng Bồ Đào Nha và tiếng Pháp. Nhưng tôi nhận thấy rằng nó gần như không tạo ra sự khác biệt nếu bạn sử dụng tiếng Tây Ban Nha hoặc tiếng Anh như ngôn ngữ OCR để phát hiện một văn bản tiếng Tây Ban Nha.

Nếu bạn chuyển đổi hình ảnh thành thang độ xám, bạn sẽ nhận được kết quả tốt hơn. Sự công nhận là OK, nhưng nó không thỏa mãn tôi. Nó tạo ra nhiều lỗi như Tesseract mặc dù Tesseract cần tiền xử lý hình ảnh nhiều hơn để có được những kết quả này.

+0

Hey @Elume bạn có thể xem http://stackoverflow.com/questions/38824278/add-new-language-for-ocr-engine này – Cloy

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