Sự ra mắt của Kreuzberg , một thư viện Python mới dành cho việc trích xuất văn bản, đã làm dấy lên một cuộc thảo luận kỹ thuật thú vị trong cộng đồng lập trình viên, đặc biệt liên quan đến các lựa chọn triển khai và khả năng OCR của nó. Mặc dù thư viện này nhằm mục đích đơn giản hóa việc trích xuất văn bản từ tài liệu, phản hồi từ cộng đồng cho thấy cả tiềm năng và hạn chế của nó trong các ứng dụng thực tế.
Tính năng và Thành phần Chính:
- API đồng bộ và bất đồng bộ để trích xuất văn bản
- Xử lý PDF sử dụng pypdfium2 (công cụ PDF của Chrome)
- Xử lý OCR sử dụng Tesseract
- Hỗ trợ nhiều định dạng tài liệu bao gồm PDF, Word, PowerPoint, OpenDocument
- Xử lý cục bộ không phụ thuộc vào API bên ngoài
- Hoạt động hiệu quả về tài nguyên mà không cần yêu cầu GPU
Tranh cãi về triển khai bất đồng bộ
Việc triển khai bất đồng bộ của thư viện đã trở thành tâm điểm tranh luận giữa các lập trình viên. Mặc dù Kreuzberg cung cấp cả API đồng bộ và bất đồng bộ, một số lập trình viên đặt câu hỏi về sự cần thiết của xử lý bất đồng bộ đối với các thao tác PDF chủ yếu gắn với CPU. Cuộc thảo luận cho thấy một sự cân nhắc sâu sắc hơn về các phương pháp phát triển Python hiện đại, với một số người cho rằng việc triển khai bất đồng bộ có thể tạo thêm độ phức tạp không cần thiết cho những thao tác đồng bộ đơn giản.
Nó chỉ làm rối code Python vốn đã hợp lý với async/await. Có lẽ họ đang chuẩn bị cho điều gì đó mà chúng ta chưa biết, chẳng hạn như một trình thực thi bất đồng bộ song song có thể được thiết lập để sử dụng các luồng gốc mà không cần thay đổi code và bằng cách nào đó bảo vệ bạn nếu nó phát hiện trạng thái được chia sẻ.
Lựa chọn công cụ OCR và hiệu suất
Việc chọn Tesseract làm công cụ OCR chính đã tạo ra nhiều thảo luận về sự đánh đổi hiệu suất. Mặc dù Tesseract cung cấp chức năng cơ bản tốt cho các tài liệu văn bản tiêu chuẩn, các thành viên cộng đồng đã chỉ ra các giải pháp thay thế như EasyOCR , PaddleOCR và Surya để có kết quả tốt hơn. Cuộc thảo luận cho thấy mặc dù Tesseract có thời gian khởi động nhanh và xử lý nhẹ nhàng, nó có thể chưa đáp ứng được các trường hợp phức tạp hơn như bài báo khoa học hoặc tài liệu yêu cầu phân tích bố cục.
Các Giải Pháp Thay Thế Được Cộng Đồng Đề Xuất:
- Các công cụ OCR:
- EasyOCR (giấy phép Apache)
- PaddleOCR
- Surya (miễn phí cho các công ty nhỏ)
- Docling
- Xử lý PDF:
- PyMuPDF (giấy phép AGPL)
- PDFplumber
- pdf.js
Backend xử lý PDF
Việc Kreuzberg sử dụng pypdfium2 , dựa trên công cụ PDF của Chrome , đã nhận được sự chú ý tích cực từ cộng đồng. Lựa chọn này nổi bật đặc biệt khi so sánh với các giải pháp thay thế như PyMuPDF , mặc dù có hiệu suất xuất sắc, nhưng lại đi kèm với các hạn chế cấp phép AGPL hạn chế việc sử dụng trong các ứng dụng thương mại. Cách tiếp cận xử lý PDF của thư viện cho thấy sự cân bằng cẩn thận giữa hiệu suất và khả năng sử dụng thực tế.
Tiềm năng phát triển trong tương lai
Phản hồi từ cộng đồng gợi ý một số lĩnh vực có thể mở rộng, bao gồm hỗ trợ nhận dạng tài liệu viết tay và cải thiện khả năng phân tích bài báo khoa học. Cuộc thảo luận cũng đã làm dấy lên sự quan tâm về khả năng hợp tác tiềm năng, với một số lập trình viên đang làm việc trên các dự án tương tự bày tỏ sự quan tâm trong việc hợp tác để nâng cao khả năng của thư viện.
Sự xuất hiện của Kreuzberg phản ánh một xu hướng rộng lớn hơn trong các công cụ xử lý tài liệu, nơi các lập trình viên phải cân bằng nhiều mối quan tâm: hiệu quả xử lý, các cân nhắc về cấp phép và nhu cầu ngày càng tăng đối với các tính năng nâng cao như phân tích bố cục và nhận dạng chữ viết tay. Khi thư viện tiếp tục phát triển, ý kiến đóng góp của cộng đồng có thể định hình sự phát triển của nó hướng tới việc giải quyết các nhu cầu khác nhau này trong khi vẫn duy trì lời hứa cốt lõi về tính đơn giản và hiệu quả.
Reference: Kreuzberg: Một thư viện Python cho việc trích xuất văn bản từ tài liệu