3 điểm bởi GN⁺ 2024-11-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đâ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-ocrTogether AI
  • Trong JavaScript, có thể truyền filePathTOGETHER_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-ocrTogether AI

1 bình luận

 
GN⁺ 2024-11-17
Ý 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 đã đưa vào một hóa đơn có 3 mục giống hệt nhau, nhưng thay vì xuất ra 3 gạch đầu dòng như thường lệ, nó lại tạo thành một bảng có cột quantity vốn không có trên tờ giấy gốc
      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 từng gặp khó khăn khi trích xuất nội dung khoa học từ PDF poster, ví dụ Nougat thường dễ hỏng khi bố cục thay đổi
      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
    • “Need an example image? Try ours.” là một ý tưởng hay. Tôi muốn thấy nhiều dịch vụ hơn cung cấp tính năng tương tự
    • Tôi tò mò về độ chính xác của nó
      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ó
    • Tôi muốn biết liệu có thể có tùy chọn dùng local LLM không
  • Đâ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

    • Các hệ thống OCR khác cũng vậy, chỉ là trong ngữ cảnh đó người ta không gọi loại lỗi ấy là ảo giác thôi
  • 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

    • Tác giả dự án là DevRel của Together.ai. Dù vậy, đây vẫn là một cách quảng bá công cụ cho lập trình viên rất tốt
    • Có vẻ together.ai đang tài trợ cho demo, ít nhất là một phần
    • Tôi đã hy vọng có thể tự host được vì lý do quyền riêng tư và chi phí
    • together.ai cung cấp hơn 100 mô hình mã nguồn mở qua API tương thích OpenAI, bao gồm cả Llama 3.2 đa phương thức
  • 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

    • Tôi muốn biết Handwriting OCR(https://www.handwritingocr.com) so với việc này ra sao
      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
    • Có lẽ nên để phần OCR cho llama3.2-vision xử lý, rồi giao phần chuyển đổi CSV cho ChatGPT
  • 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

    • Không biết bạn đã thử downscale ảnh chưa. Tôi bắt đầu có kết quả tốt hơn với ảnh độ phân giải thấp. Tôi dùng bản scan tạo từ camera điện thoại
      convert -density 76 input.pdf output-%d.png
      https://github.com/philips/paper-bidsheets
    • Xét theo mặt bằng chung của các mô hình, tình trạng OCR mã nguồn mở hiện khá thảm. Đáng tiếc là các lựa chọn đóng như Microsoft, Google lại tốt hơn nhiều. Không biết bạn đã thử những thứ đó chưa
      Flash khá thú vị, cũng tò mò bạn đã thử những LLM nào
    • Gần đây tôi chạy OCR trên một tập ảnh bằng gpt-4o và có kết quả khá tốt. Điều quan trọng nhất tôi nhận ra là, ngay cả khi dùng LLM xịn thì khâu chuẩn bị dữ liệu bình thường vẫn rất quan trọng
      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
    • Tôi cũng đang định làm đúng việc này nên hơi thất vọng. Tôi đang số hóa ảnh gia đình, và một số ảnh có tiếng Đức ở mặt sau
      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
    • Không biết bạn đã thử Claude chưa
      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”

    • Dựa trên việc nheo mắt thì có thể đọc được, tôi áp dụng gaussian blur cho ảnh, và nó trả lời rằng phần chữ mờ đọc là “STOP THINKING IN CIRCLES.”
      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
    • Tôi cũng không đọc được cái này
      Đứng xa ra thì đọc dễ hơn
    • Tôi tự hỏi liệu LLM ban đầu có từng được huấn luyện với loại chất liệu nguồn như thế này không
      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
    • Trước khi xem đáp án thì tôi cũng chỉ đọc được mỗi từ “stop” thôi
    • Tôi không hiểu vì sao cái này lại thú vị. Bức ảnh nhìn như chẳng có gì cả, và phải nghiêng góc mới lờ mờ thấy chữ
  • 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 không thể hiểu nổi tại sao một công nghệ có dù chỉ một chút khả năng bịa đặt lại được xem xét để dùng trong thế giới thự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]”