- Đây là công cụ web giúp giảm bớt công việc phải chép ảnh tài liệu sang văn bản rồi sắp xếp lại bằng cách chuyển đổi sang Markdown có cấu trúc
- Hiện tại, đầu vào trên web chủ yếu là tải ảnh lên, và có thông báo rằng hỗ trợ PDF sẽ sớm được cung cấp
- Dịch vụ hoạt động dựa trên gói npm llama-ocr và Together AI
- Trong JavaScript, có thể truyền
filePath và TOGETHER_API_KEY vào hàm ocr để nhận kết quả Markdown
- Hỗ trợ cả tải lên trên web lẫn gọi bằng mã, nên có thể thử chuyển đổi ảnh tài liệu theo cách làm thủ công hoặc trong quy trình phát triển
Chuyển tài liệu hình ảnh sang Markdown
- LlamaOCR.com là công cụ chuyển tài liệu được tải lên thành Markdown
- Trang web hiển thị hướng dẫn “Upload an image to turn it into structured markdown”, và tạo Markdown có cấu trúc từ ảnh được tải lên
- Hỗ trợ PDF được ghi là “soon”, nên phạm vi hiện tại chủ yếu tập trung vào ảnh
Cách dùng trong mã
- Có thể chạy OCR trong mã JavaScript bằng gói npm llama-ocr
import { ocr } from 'llama-ocr';
const markdown = await ocr({
filePath: './trader-receipt.jpg',
apiKey: process.env.TOGETHER_API_KEY
});
- Ví dụ truyền đường dẫn tệp ảnh vào
filePath, và truyền biến môi trường TOGETHER_API_KEY vào apiKey
- Dịch vụ được xây dựng dựa trên llama-ocr và Together AI
1 bình luận
Ý kiến trên Hacker News
Tôi là người làm ra llama-ocr. Cảm ơn mọi người đã chia sẻ và phản hồi tích cực. Tôi cần một OCR API đơn giản nên đã làm nó vào đầu tuần này, và nó phân tích ảnh thành Markdown có cấu trúc bằng Llama 3.2 Vision được host trên Together.ai
Hiện cũng có gói npm. Tôi dự định sẽ thêm các tính năng như phân tích PDF và phản hồi JSON, và nếu có câu hỏi thì tôi sẽ cố gắng trả lời
Tôi muốn biết liệu mức biến đổi lớn như vậy có phải là hành vi được kỳ vọng hay mong muốn không. Đầu ra lúc thì là danh sách gạch đầu dòng, lúc thì là bảng, nên việc xử lý tự động phía sau trở nên khó hơn một chút
Tôi muốn biết liệu bạn có cân nhắc cả những trường hợp sử dụng như thế này không
Tôi muốn biết nó mắc những kiểu lỗi nào khi so với các hệ thống OCR hiện có
Đây thực chất chỉ là gửi hình ảnh tới Llama 3.2 Vision và yêu cầu nó đọc văn bản
Giống như các đầu ra LLM khác, nó dễ bị ảo giác. Nó không đọc hình dạng ký tự từ pixel, mà suy đoán văn bản trong lúc mô tả hình ảnh dựa trên những ảnh và chú thích mà nó đã học. Đặc biệt khi khó đọc, nó có thể bịa ra cả từ hoàn chỉnh
Trông rất ấn tượng. Gần đây tôi làm OCR khá nhiều nên rất vui khi có công cụ mới trong lĩnh vực này. Người dẫn đầu hiện tại trong mảng PDF→Markdown có lẽ là Nougat của Facebook[1], và tôi muốn nối cái này vào DSPy để so sánh xem cái nào tốt hơn cho sách triết học
Dự án Zerox[2] của startup mà repo này liên kết tới cũng có vẻ ổn, ít nhất là phần quảng bá mượt hơn hẳn Nougat. Nếu có chuyên gia thực thụ nào đi qua đây, tôi rất muốn nghe đính chính hoặc lời khuyên
Tôi có hai điều thắc mắc. 1) Together.ai là gì và mô hình này có phải mã nguồn mở không. Website trông giống một dịch vụ hosting, còn trang “Custom Models”[3] có vẻ thiên về fine-tuning tùy chỉnh hơn là huấn luyện mô hình độc quyền của riêng họ. Có vẻ họ có hồ sơ trên HuggingFace, nhưng không rõ có thật sự là của họ không https://huggingface.co/TogetherAI
2) Trên GitHub ghi là “hosted demo”, nhưng phần được host dường như chỉ là một WebGUI nhỏ gọn. Tôi muốn biết liệu chức năng này hiện tại và trong tương lai có nghĩa là chỉ dùng được qua API call hay không
Tái bút: trên trình duyệt desktop, liên kết ở header bị lỗi và onClick không được kích hoạt
[1] https://facebookresearch.github.io/nougat/
[2] https://github.com/getomni-ai/zerox
[3] https://www.together.ai/products#custom-models
Có một điểm khá lạ. Tôi tải lên một webcomic làm ví dụ, toàn bộ lời thoại đều viết in hoa, nhưng đầu ra lại trộn lẫn chữ hoa chữ thường kiểu câu và kiểu tiêu đề giữa các panel một cách thiếu nhất quán
Tôi cũng thử với một bài toán mà tôi thực sự muốn dùng OCR. Tôi có những slide cũ cần số hóa và đa số đều có nhãn; khi tải một cái lên, nó mô tả rằng đó trông giống ảnh chụp một slide hoặc khung phim đã cũ ngả vàng, có một phần cắt hình chữ nhật tối ở giữa, và văn bản là “Once Upon a Time”, còn con số là “1069”
Vấn đề không chỉ là phần mô tả slide dài dòng không cần thiết, mà chữ thật không phải chữ viết tay và là “Once Uniquitous.”, còn con số là 106g. Đó rõ ràng là chữ ‘g’, không phải ‘9’
Điều thú vị là đây có thể là một ví dụ về thiên kiến mô hình. Nó nhìn slide quá giống đồ cổ nên đã ảo giác ra một tiêu đề sáo rỗng hoàn toàn, và cũng bỏ lỡ việc hình chữ nhật đen là do chiếu sáng từ phía trước để phần trong suốt không hiện ra
Ngoài ra, có vẻ bản thân API có giới hạn kích thước file hoặc độ phân giải nhưng không được tài liệu hóa
Gần đây tôi đã dùng llama3.2-vision để xử lý các tờ phiếu đấu giá viết tay cho một phiên đấu giá từ thiện, và nó đọc được cả chữ viết tay khá tệ với độ chính xác tương đối tốt. Tôi muốn dùng lại cho sự kiện năm sau
Tuy vậy, việc khiến nó xuất CSV một cách nhất quán khá bực mình. ChatGPT và Gemini có vẻ làm phần đó tốt hơn, nhưng tôi chưa thử tự động hóa đến mức ấy
Quy mô vào khoảng 100 trang phiếu đấu giá, nên việc dọn dẹp thủ công ở mức nào đó vẫn chấp nhận được. Chắc chắn vẫn tốt hơn là đốt thời gian của tình nguyện viên
https://github.com/philips/paper-bidsheets
Nó không miễn phí, nhưng độ chính xác với tài liệu viết tay thuộc hàng tốt nhất. Tôi là nhà sáng lập nên có thiên vị, nhưng hiện tại mức độ chính xác thực sự rất đáng kỳ vọng. Với một dự án 100 trang thì chỉ tốn 12 đô, nên có thể tiết kiệm được nhiều thời gian
Gần đây tôi làm OCR khá nhiều, chủ yếu là số hóa văn bản trong ảnh gia đình. Các mô hình OCR thông thường rất tệ, còn LLM thì làm tốt hơn hẳn. Trong các mô hình tôi thử, Gemini Flash vượt trội áp đảo, nhưng dù vậy vẫn có đủ nhiều lỗi và ảo giác đến mức gõ tay còn nhanh hơn.
Cái cảm giác là gần như làm được rồi nhưng vẫn không được khiến tôi rất bực. Công cụ này trông còn tệ hơn. Có lúc nó chỉ trả lời phần văn bản, có lúc lại đưa ra cả mô tả kiểu “The image is a scanned document with handwritten text...”. Tôi đã hy vọng có kiểu tinh chỉnh nào đó để thắng được Gemini Flash, vì như thế đã tiết kiệm được rất nhiều thời gian, nên thấy khá tiếc
convert -density 76 input.pdf output-%d.pnghttps://github.com/philips/paper-bidsheets
Flash khá thú vị, cũng tò mò bạn đã thử những LLM nào
Việc cắt ảnh chỉ còn phần văn bản, bỏ viền và tăng độ tương phản đã giúp cực kỳ nhiều. Đây là bài viết từ năm 2015 nhưng vẫn rất đúng với GPT: https://www.danvk.org/2015/01/07/finding-blocks-of-text-in-a...
Với GPT, cho vài đoạn văn trở xuống mỗi lần có vẻ tốt hơn là đưa cả trang. Văn bản càng ngắn thì khả năng ảo giác càng giảm
Loại OCR gần đây được bàn tán nhiều thì rất tệ, nên tôi đã hy vọng cái này sẽ tốt hơn. Khi dán từng ảnh vào chat thì ChatGPT 4o khá ổn, nhưng tôi vẫn chưa thử API. Tôi không biết xử lý 6.500 tấm ảnh sẽ tốn bao nhiêu, mà trong đó cũng có nhiều ảnh trống, nhưng lại không có cách dễ để lọc chúng ra
Việc trả về vị trí văn bản vẫn chưa tốt, nhưng trong phạm vi tôi thử thì hiệu năng OCR thật sự ấn tượng
Tôi nghi ngờ liệu đây có nên là một bài “Show HN” không. Nó chỉ trông giống một frontend, và cũng chẳng thấy phần nào liên hệ trực tiếp với Llama trong tên. Có thể together.ai chỉ cung cấp hạ tầng đám mây
Tôi đã dùng thuật toán di truyền để sắp xếp 500 hình tròn thành một câu, rồi đưa vào một câu được vẽ bằng các hình tròn vật lý thật
https://www.instagram.com/marekgibney/p/BiFNyYBhvGr/
Điều thú vị là nó nhận ra các hình tròn khá tốt nhưng không nhìn ra câu. Nó trả lời kiểu “Trong ảnh không có văn bản hay yếu tố nào có thể biểu diễn bằng Markdown, chỉ là một bố cục thị giác của các hình tròn và không có thông tin nào để chuyển sang Markdown”
Câu trả lời không mang tính quyết định, nên tôi cũng thử ảnh gốc nhiều lần nhưng chưa lần nào thành công. Ngược lại, mọi hiệu ứng bộ lọc thông thấp tôi áp dụng đều hoạt động với tỷ lệ thành công cao
https://imgur.com/q7Zd7fa
Đứng xa ra thì đọc dễ hơn
Cách bạn dùng thuật toán di truyền khá ngầu. Tôi muốn xem code hoặc ít nhất là hàm thưởng
Buồn cười thật. Tôi đưa vào 3 ảnh chụp màn hình của một tài liệu dài thì nó xử lý tương đối ổn, nhưng lúc hiệu đính tôi phát hiện AI đã bịa ra những đoạn văn không hề có trong bản gốc
Có lẽ do đặc thù ảnh chụp màn hình nên một số câu hoặc đoạn bị cắt ngang ở giữa, và điều đó kích hoạt xu hướng điền vào chỗ trống của LLM. Nó không thể để nguyên một đoạn chưa hoàn chỉnh, và còn thêm cả một đoạn kết luận ngắn vốn hoàn toàn không có trong tài liệu gốc
Tôi đã đưa vào một bản scan cũ của sơ đồ mạch bo mạch chủ Asus P3B-F từ năm 1997
Nó chỉ trích xuất được một phần văn bản ở khối tiêu đề, ví dụ như tên dự án và ngày tháng, và dù phông chữ rất rõ ràng, nó vẫn trộn lẫn cả 8/B và 1/I
Những thông tin thực sự hữu ích thì lại bị biến thành kiểu “Tables / Table 1: [Insert table 1 here] / Other Elements / [Insert other elements here]”