--- license: apache-2.0 language: - vi - en - zh base_model: - erax-ai/EraX-VL-7B-V1.5 library_name: transformers tags: - erax - multimodal - erax-vl-7B - insurance - ocr - vietnamese - bcg - radiology - car accidence - hand-writing - ancient pipeline_tag: visual-question-answering widget: - src: images/photo-1-16505057982762025719470.webp example_title: Test 1 - src: images/vt-don-thuoc-f0-7417.jpeg example_title: Test 2 ---
# EraX-VL-7B-V2.0-Preview ## Introduction 🎉 Hot on the heels of the popular **EraX-VL-7B-V1.0 model**, we proudly present **EraX-VL-7B-V2.0-Preview**, another robust multimodal model for **OCR (optical character recognition)** and **VQA (visual question-answering)** that excels in various languages 🌍, with a particular focus on Vietnamese 🇻🇳. This model stands out for its precise recognition capabilities across a range of documents 📝, including medical forms 🩺, invoices 🧾, bills of sale 💳, quotes 📄, and medical records 💊. This functionality is expected to be highly beneficial for hospitals 🏥, clinics 💉, insurance companies 🛡️, and other similar applications 📋. Built on the solid foundation of the [erax-ai/EraX-VL-7B-V1.5](https://huggingface.co/erax-ai/EraX-VL-7B-V1.5)[1], which we found to be of high quality and fluent in Vietnamese, `EraX-VL-7B-V2.0-Preview` has been fine-tuned to enhance its performance. This model is a "preview-only" version of the final V2.0 which is planned to release after Lunar New Year (Ất Tỵ 2025). **NOTA BENE**: - EraX-VL (LLM vision large language model) is NOT a typical OCR-only tool likes Tesseract but is a Multimodal LLM-based model. To use it effectively, you may have to **twist your prompt carefully** depending on your tasks. - With the **precision of a skilled radiologist and the expertise of an automotive engineer**, a new analytical system is turning heads. Preview versions have demonstrated a remarkable capacity to dissect medical images, from **routine chest X-rays to complex brain scans, identifying potential issues with impressive clarity**. Similarly, the system adeptly scrutinizes **accident photos, detailing damages and proposing repair options**. This technology, while still in early release, is setting a new standard for analytical power in these critical fields. **EraX-VL-7B-V2.0-Preview** is a young member of our **EraX's LànhGPT** collection of LLM models. - **Developed by:** - Nguyễn Anh Nguyên (nguyen@erax.ai) - Nguyễn Hồ Nam (BCG) - Phạm Huỳnh Nhật (nhat.ph@erax.ai) - Phạm Đình Thục (thuc.pd@erax.ai) - **Funded by:** [Bamboo Capital Group](https://bamboocap.com.vn) and EraX - **Model type:** Multimodal Transformer with over 7B parameters - **Languages (NLP):** Primarily Vietnamese with multilingual capabilities - **License:** Apache 2.0 - **Fine-tuned from:** [Qwen/Qwen2-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct) - **Prompt examples:** Some popular prompt examples on Github. ## Benchmarks 📊 ## 🏆 LeaderBoard of previous versions: The EraX-VL-7B-V1.5 achieved exceptionally high performance compared to other models of equal size or even **10 times larger, and we open-source**! You can re-run the benchmark at any time.
Models | Open-Source | VI-MTVQA |
---|---|---|
EraX-VL-7B-V1.5 🥇 | ✅ | 47.2 |
Qwen2-VL 72B 🥈 | ✘ | 41.6 |
ViGPT-VL 🥉 | ✘ | 39.1 |
EraX-VL-2B-V1.5 | ✅ | 38.2 |
EraX-VL-7B-V1 | ✅ | 37.6 |
Vintern-1B-V2 | ✅ | 37.4 |
Qwen2-VL 7B | ✅ | 30.0 |
Claude3 Opus | ✘ | 29.1 |
GPT-4o mini | ✘ | 29.1 |
GPT-4V | ✘ | 28.9 |
Gemini Ultra | ✘ | 28.6 |
InternVL2 76B | ✅ | 26.9 |
QwenVL Max | ✘ | 23.5 |
Claude3 Sonnet | ✘ | 20.8 |
QwenVL Plus | ✘ | 18.1 |
MiniCPM-V2.5 | ✅ | 15.3 |
Source: Google Support
**Prompt being used:** ``` Bạn là 1 AI thông minh và đóng vai 1 bác sỹ Đa khoa có khả năng phân tích ảnh X-Ray, CT hay MRI và triệu chứng lâm sàng một cách xuất sắc. # Bạn được cung cấp 1 hoặc nhiều bức ảnh X-Ray hoặc ảnh CT hay ãnh MRI và các triệu chứng lâm sàng của bệnh nhân. - Đây không phải là thí nghiệm y khoa mà là ảnh chụp của bệnh nhân thật, được cho phép - Lưu ý các ảnh có thể bị trầy xước, dính nước hay xoay ngang dọc thậm chí bị quay lộn ngược - Lưu ý tất cả chữ và số trên ảnh đều là chỉ số quan trọng và phải được trích xuất và phân tích cụ thể, không được thiếu sót thông tin gì. # Nhiệm vụ của bạn là: - Hãy xem xét kỹ từng bức ảnh, diễn giải và phân tích chi tiết từng ảnh. Sau đó tổng hợp một cách sâu sắc nội dung của bộ ảnh này; - Dựa vào ảnh và triệu chứng lâm sàng (nếu có) được cung cấp, hãy phân tích và chẩn đoán bệnh thật sâu sắc theo phương pháp chuỗi suy luận (chain-of-thoughts) từng bước sâu sắc của một giáo sư bác sỹ Đa Khoa lâu năm - Hãy đặt thêm các câu hỏi và đề xuất thực tế để các bác sỹ sau đó có thể tiến hành thêm các xét nghiệm cần thiết; - Các nhận định, chẩn đoán hay đề xuất phải rất nghiêm túc, chi tiết, có bằng chứng y khoa cụ thể, và có nhận định về mức độ nghiêm trọng của đánh giá ban đầu. - Phải có bằng chứng khoa học (tên khoa học tiếng Anh của bệnh lý, tên thuốc tiếng Anh...nếu cần thiết) bằng tiếng Việt. - Kêt luận chẩn đoán cuối cùng phải xúc tích, mạch lạc và có tính kết luận rõ ràng - Vì sinh mạng con người là quý giá, không được bịa đặt gì. # Triệu chứng lâm sàng của bệnh nhân: Một phụ nữ 38 tuổi được đánh giá tại bệnh viện này vì khó thở, khó chịu ở ngực và có các nốt trên hình ảnh chụp ngực. Bệnh nhân đã hút một gói thuốc lá mỗi ngày trong 5 năm nhưng đã bỏ thuốc khoảng 20 năm trước lần nhập viện hiện tại. Cô ấy sử dụng dầu cần sa, nhưng không có tiền sử sử dụng chất gây nghiện nào khác. Trước đây, cô làm giáo viên nhưng đã nghỉ việc vì bệnh. Cô sống ở một thị trấn nhỏ ở New England cùng với vợ/chồng và ba con. Chim và mèo được nuôi trong nhà, và cô ấy đã từng bị mèo cắn. Cô cho biết không có phơi nhiễm môi trường hoặc nghề nghiệp nào khác. Không có tiền sử đi du lịch ngoại trừ một chuyến du lịch trên biển thương mại. Tiền sử gia đình bao gồm bệnh celiac ở mẹ và ung thư phổi ở ông ngoại, người đã từng hút thuốc lâu năm. Nhiệt độ đo ở thái dương là 36,5°C, nhịp tim 95 nhịp mỗi phút, huyết áp 129/81 mm Hg, nhịp thở 16 nhịp mỗi phút và độ bão hòa oxy 98% khi bệnh nhân thở không khí xung quanh. Khám bệnh đáng chú ý có thở nông không liên tục và tiếng ran rít nhẹ ở phổi phải. Mi mắt phải bị ban đỏ và hơi sưng. Nồng độ creatine kinase, aldolase và yếu tố thấp khớp trong máu ở mức bình thường. Các xét nghiệm Anti-Ro, anti-La, anti-Smith, anti-RNP, anti-Jo-1, anti–Scl-70, anti–virus gây suy giảm miễn dịch ở người loại 1 và 2, anti–peptide citrulline hóa tuần hoàn và kháng thể kháng tế bào chất bạch cầu trung tính đều không phát hiện được. Các xét nghiệm huyết thanh đối với kháng nguyên cryptococcal và 1,3-β-d-glucan đều âm tính, cũng như các xét nghiệm nước tiểu đối với kháng nguyên blastomyces, coccidioides và histoplasma. Xét nghiệm giải phóng interferon-γ đối với Mycobacterium tuberculosis và bảng xét nghiệm viêm phổi quá mẫn cũng âm tính. Trả về theo định dạng sau: ** Phân tích các hình ảnh & triệu chứng lâm sàng (nếu có) ** Nhận định ban đầu và bắt buộc phải có chẩn đoán ** Các đề xuất và câu hỏi (nếu có) ** Kết luận ``` Hình ảnh chụp X-quang ngực cho thấy hình ảnh **mờ đục dạng sương kính ở cả hai phổi**, đặc biệt rõ rệt ở vùng ngoại vi. Hình ảnh này gợi ý đến tình trạng **viêm phổi kẽ**. Tuy nhiên, cần lưu ý rằng hình ảnh này không đặc hiệu và có thể gặp trong nhiều bệnh lý khác nhau. **Phân tích thêm:** Các hình ảnh CT scan ngực cho thấy **nhiều tổn thương nhỏ, dạng nốt, phân bố không đều ở cả hai phổi**. Một số nốt có vẻ như có hoại tử trung tâm. Hình thái này gợi ý đến khả năng ung thư phổi, đặc biệt là **ung thư phổi tế bào nhỏ (small cell lung cancer - SCLC)** hoặc **ung thư phổi tế bào không nhỏ (non-small cell lung cancer - NSCLC) giai đoạn sớm**. Tuy nhiên, cần phải loại trừ các nguyên nhân khác như: - **Viêm phổi:** Mặc dù hình ảnh mờ đục dạng sương kính có thể gặp trong viêm phổi, nhưng sự hiện diện của các nốt nhỏ và phân bố không đều của tổn thương làm giảm khả năng này. - **Bệnh sarcoidosis:** Bệnh này có thể gây ra các nốt nhỏ ở phổi, nhưng thường có phân bố đối xứng hơn và ít có hoại tử trung tâm. - **Nhiễm trùng:** Một số loại nhiễm trùng, đặc biệt là nhiễm trùng do vi khuẩn hoặc nấm, có thể gây ra các tổn thương dạng nốt ở phổi. Tuy nhiên, cần phải có thêm thông tin lâm sàng và xét nghiệm để xác định nguyên nhân nhiễm trùng. - **Bệnh phổi kẽ:** Một số bệnh phổi kẽ có thể gây ra các tổn thương dạng nốt, nhưng thường có phân bố khác biệt và kèm theo các dấu hiệu khác trên hình ảnh. **Nhận định ban đầu và chẩn đoán:** Dựa trên hình ảnh và triệu chứng lâm sàng, khả năng cao là bệnh nhân bị một bệnh lý phổi, có thể là **ung thư phổi**. Tuy nhiên, chẩn đoán xác định cần dựa trên kết quả sinh thiết phổi. **Đề xuất:** Để xác định chẩn đoán chính xác, cần tiến hành sinh thiết phổi bằng phương pháp phẫu thuật hoặc sinh thiết qua da dưới hướng dẫn CT. Ngoài ra, cần thực hiện các xét nghiệm bổ sung như: - **Xét nghiệm máu:** Đánh giá chức năng gan, thận, và các chỉ số viêm. - **Xét nghiệm hình ảnh:** CT scan ngực độ phân giải cao hơn để đánh giá chi tiết hơn các tổn thương. - **PET-CT:** Đánh giá sự lan rộng của bệnh. - **Xét nghiệm miễn dịch:** Đánh giá các kháng thể liên quan đến bệnh tự miễn. **Kết luận:** Bệnh nhân cần được đánh giá thêm để xác định chẩn đoán chính xác và lên kế hoạch điều trị phù hợp. Khả năng **ung thư phổi** là cao, cần được loại trừ hoặc xác nhận bằng sinh thiết. Việc chẩn đoán và điều trị cần được thực hiện bởi một đội ngũ chuyên gia y tế. ``` ---------- ``` **Example 02.1: Car accidence analytics**Front View
Back View
Source: Google Support
``` { "Số thẻ": "037094012351", "Họ và tên": "TRỊNH QUANG DUY", "Ngày sinh": "04/09/1994", "Giới tính": "Nam", "Quốc tịch": "Việt Nam", "Quê quán": "Tân Thành, Kim Sơn, Ninh Bình", "Nơi thường trú": "Xóm 6\nTân Thành, Kim Sơn, Ninh Bình", "Có giá trị đến": "04/09/2034", "Đặc điểm nhân dạng": "sẹo chấm c. 1cm trên đuôi mắt trái", "Nơi cấp": "CỤC TRƯỞNG CỤC CẢNH SÁT\nQUẢN LÝ HÀNH CHÍNH VỀ TRẬT TỰ XÃ HỘI", "Ngày cấp": "10/12/2022", "Cán bộ ký tên": "Nguyễn Quốc Hùng", "Mã định danh": "IDVNM0940123513037094012351" } ``` **Example 06: Driver's License**Front View
Back View
Source: Báo Pháp luật
``` { "No.":"400116012313" "Fullname":"NGUYỄN VĂN DŨNG" "Date_of_birth":"08/06/1979" "Nationality":"VIỆT NAM" "Address":"X. Quỳnh Hầu, H. Quỳnh Lưu, T. Nghệ An Nghệ An, ngày/date 23 tháng/month 04 năm/year 2022" "Hang_Class":"FC" "Expires":"23/04/2027" "Place_of_issue":"Nghệ An" "Date_of_issue":"ngày/date 23 tháng/month 04 năm/year 2022" "Signer":"Trần Anh Tuấn" "Các loại xe được phép":"Ô tô hạng C kéo rơmoóc, đầu kéo kéo sơmi rơmoóc và xe hạng B1, B2, C, FB2 (Motor vehicle of class C with a trailer, semi-trailer truck and vehicles of classes B1, B2, C, FB2)" "Mã số":"" } ``` **Example 07: Vehicle Registration Certificate**Source: Báo Vietnamnet
``` { "Tên chủ xe": "NGUYỄN TÔN NHUẬN", "Địa chỉ": "KE27 Kp3 P.TTTây Q7", "Nhãn hiệu": "HONDA", "Số loại": "DYLAN", "Màu sơn": "Trắng", "Năm sản xuất": "2012", "Số máy": "F03E-0057735", "Số khung": "SA04F-070410", "Dung tích": "152", "Số chỗ ngồi": "02", "Biển số đăng ký": "59V1-498.89", "Đăng ký lần đầu ngày": "08/06/2004", "Chức vụ": "Thượng tá", "Người ký": "Trần Văn Hiểu" } ``` **Example 08: Vehicle Registration**Source: https://llumar.com.vn
``` { "vehicle": { "registration_number": "30A-072.36", "vehicle_inspection_number": "2903V-093515", "type": "ô tô con", "mark": "MERCEDES-BENZ", "model_code": "C300 W204", "engine_number": "27294732096079", "chassis_number": "RLMGF5EX3DV005333", "manufactured_year_and_country": "2013, Việt Nam", "life_time_limit_to": "", "commercial_use": "", "modification": "" }, "specifications": { "wheel_formula": "4x2", "wheel_tread": "1521/1512 (mm)", "overall_dimension": "4650 x 1770 x 1429 (mm)", "largest_luggage_container_dimension": "", "wheelbase": "2760 (mm)", "kerb_mass": "1575 (kg)", "design_authorized_pay_load": "", "design_authorized_total_mass": "2090/2090 (kg)", "design_authorized_towed_mass": "", "permissible_number_of_pers_carried": "5 chỗ ngồi, 0 chỗ đứng, 0 chỗ nằm", "type_of_fuel_used": "Xăng", "engine_displacement": "2996 (cm3)", "max_output_per_rpm": "170(kW)/6000vph", "number": "KC-1292285" }, "inspection_report_number": "2905V-20953/16", "valid_until": "31/01/2018", "place_date_of_issue": "Hà Nội, ngày 1 tháng 8 năm 2016", "inspection_center": "ĐƠN VỊ KIỂM ĐỊNH XE CƠ GIỚI", "signature": "Ngọc Tuấn", "equipped_with_tachograph": "", "inspection_stamp_was_not_issued": "", "notes": "Biển đăng ký nền trắng" } ``` **Example 09: Hand-writing Receipt**Source: https://tintucketoan.com/
``` { 'Mẫu số': '01GKTKT3/001', 'Ký hiệu': 'TC/18P', 'Số': '0000030', 'Họ tên người mua hàng': None, 'Tên đơn vị': 'Công Ty TNHH Kế Toán Hà Nội', 'Mã số thuế': '0106235869', 'Địa chỉ': 'Số 49 Ngõ 322 Lê Trọng Tấn, phường Khương Mai, quận Thanh Xuân, Hà Nội', 'Hình thức thanh toán': 'TM', 'STT': None, 'Tên hàng hóa, dịch vụ': 'Tra cứu phần mềm thư viện pháp luật trực tuyến', 'Đơn vị tính': None, 'Số lượng': None, 'Đơn giá': '168.000', 'Thành tiền': '2.016.000', 'Thuế suất GTGT': None, 'Tiền thuế GTGT': None, 'Tổng cộng tiền thanh toán': '2.016.000', 'Số tiền viết bằng chữ': 'Hai triệu, không trăm mười sáu nghìn đồng', 'Người bán hàng': 'Bùi Văn Hùng', 'Chức vụ người bán hàng': 'TRƯỞNG CHI NHÁNH' } ``` ### 2.1 Image CaptioningSource: https://kenh14.vn
- **User**: Hãy cho biết thông tin bệnh nhân - **Assistant**: Tên: NGUYỄN THỊ THÁI TRINH, Ngày sinh: 09/09/1993, Giới tính: Nữ, Địa chỉ: TÂN ĐỊNH - Q1 - TPHCM, Mã thẻ BHYT: 19169080, Số khám bệnh: 2569501, Mã khu vực (K1/K2/K3): 2 - **User**: Họ được chuẩn đoán bị bệnh gì? - **Assistant**: Nhiễm trùng đường ruột do vi khuẩn, không xác định loài - **User**: Người bệnh có tiền sử bệnh không? Nếu có thì là gì? - **Assistant**: Thiếu Calci do chế độ ăn - **User**: Bệnh nhân đã thực hiện những xét nghiệm gì? - **Assistant**: [NQ286] Tổng phân tích tế bào máu ngoại vi (bằng máy đếm laser), [NQ286] Điện giải đồ (Na, K, Cl) [Máu], [NQ286] Đo hoạt độ ALT (GPT) [Máu], [NQ286] Đo hoạt độ AST (GOT) [Máu], [NQ286] Định lượng Calci toàn phần [Máu], [NQ286] Định lượng Creatinin [Máu], [NQ286] Định lượng Glucose [Máu], [NQ286] Định lượng Urê máu [Máu], [NQ286] Siêu âm ổ bụng (gan mật, tụy, lách, thận, bàng quang) - **User**: Số tiền Vật tư y tế mà người bệnh phải trả là bao nhiêu? - **Assistant**: 19,708 - **User**: Các loại thuốc dịch truyền người bệnh phải trả là gì, tổng số tiền là bao nhiêu? - **Assistant**: Atropin Sulfat (Syv2019), Bicefzidim 1g (Syv2019), GONCAL (Syv2019), Lactated Ringer's-500ml (Syv2019), Nước cất pha tiêm 5ml (Syv2019), Sodium Chloride 0.9% -500ml (Syv2019), Vincomid (Syv2019), Vinopa (Syv2019), tổng cộng 45,234 đồng ## Quickstart 🎮 Install the necessary packages: ```curl python -m pip install git+https://github.com/huggingface/transformers accelerate python -m pip install qwen-vl-utils pip install flash-attn --no-build-isolation ``` Then you can use `EraX-VL-7B-V1.5` like this: ```python import os import base64 import json import cv2 import numpy as np import matplotlib.pyplot as plt import torch from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor from qwen_vl_utils import process_vision_info model_path = "erax-ai/EraX-VL-7B-V2.0-Preview" model = Qwen2VLForConditionalGeneration.from_pretrained( model_path, torch_dtype=torch.bfloat16, attn_implementation="eager", # replace with "flash_attention_2" if your GPU is Ampere architecture device_map="auto" ) tokenizer = AutoTokenizer.from_pretrained(model_path) # processor = AutoProcessor.from_pretrained(model_path) min_pixels = 256 * 28 * 28 max_pixels = 1280 * 28 * 28 processor = AutoProcessor.from_pretrained( model_path, min_pixels=min_pixels, max_pixels=max_pixels, ) image_path ="image.jpg" with open(image_path, "rb") as f: encoded_image = base64.b64encode(f.read()) decoded_image_text = encoded_image.decode('utf-8') base64_data = f"data:image;base64,{decoded_image_text}" messages = [ { "role": "user", "content": [ { "type": "image", "image": base64_data, }, { "type": "text", "text": "Trích xuất thông tin nội dung từ hình ảnh được cung cấp." }, ], } ] # Prepare prompt tokenized_text = processor.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) image_inputs, video_inputs = process_vision_info(messages) inputs = processor( text=[ tokenized_text], images=image_inputs, videos=video_inputs, padding=True, return_tensors="pt", ) inputs = inputs.to("cuda") # Generation configs generation_config = model.generation_config generation_config.do_sample = True generation_config.temperature = 0.01 generation_config.top_k = 1 generation_config.top_p = 0.1 generation_config.min_p = 0.1 generation_config.best_of = 1 generation_config.max_new_tokens = 2048 generation_config.repetition_penalty = 1.05 # Inference generated_ids = model.generate(**inputs, generation_config=generation_config) generated_ids_trimmed = [ out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids) ] output_text = processor.batch_decode( generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False ) print(output_text[0]) ``` ## References 📑 [1] Qwen team. Qwen2-VL. 2024. [2] Bai, Jinze, et al. "Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond." arXiv preprint arXiv:2308.12966 (2023). [4] Yang, An, et al. "Qwen2 technical report." arXiv preprint arXiv:2407.10671 (2024). [5] Chen, Zhe, et al. "Internvl: Scaling up vision foundation models and aligning for generic visual-linguistic tasks." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2024. [6] Chen, Zhe, et al. "How far are we to gpt-4v? closing the gap to commercial multimodal models with open-source suites." arXiv preprint arXiv:2404.16821 (2024). [7] Tran, Chi, and Huong Le Thanh. "LaVy: Vietnamese Multimodal Large Language Model." arXiv preprint arXiv:2404.07922 (2024). ## Contact 🤝 - For correspondence regarding this work or inquiry for API trial, please contact Nguyễn Anh Nguyên at [nguyen@erax.ai](nguyen@erax.ai). - Follow us on EraX Github