Edit model card

Model Card: Falconsai/florence-2-invoice

  • Developed by: Michael Stattelman for Falcons.ai
  • Funded by [optional]: Falcons.ai

Model Sources:

Model Overview

Falconsai/florence-2-invoice is a fine-tuned version of the microsoft/Florence-2-base-ft model. This model has been specifically trained to identify and extract key fields from invoice images. The fine-tuning process utilized a curated dataset of invoices annotated to recognize the following fields:

  • Billing address, - Discount percentage, - Due date
  • Email client, - Header, - Invoice date
  • Invoice number, - Name client, - Products
  • Remise, - Shipping address, - Subtotal
  • Tax, - Tax percentage, - Tel client, - Total

Base Model

The base model used for fine-tuning is microsoft/Florence-2-base-ft, a state-of-the-art vision model developed by Microsoft.

Fine-tuning Configuration

The fine-tuning process was carried out using a Low-Rank Adaptation (LoRa) configuration with the following parameters:

LoraConfig(
    r=8,
    lora_alpha=8,
    target_modules=["q_proj", "o_proj", "k_proj", "v_proj", "linear", "Conv2d", "lm_head", "fc2"],
    task_type="CAUSAL_LM",
    lora_dropout=0.05,
    bias="none",
    inference_mode=False,
    use_rslora=True,
    init_lora_weights="gaussian",
    revision=REVISION
)

Hardware Used

The fine-tuning process was conducted on an Alienware system, ensuring robust performance and efficient training.

Dataset

The model was trained on a curated dataset of invoice images. Each invoice was annotated to identify the specific fields listed above. This dataset ensured that the model learned to accurately detect and extract key information from various invoice formats.

Usage

Inference

To use this model for inference, you can load it via the Hugging Face Transformers library:

import torch
from PIL import Image
from transformers import (
    AdamW,
    AutoModelForCausalLM,
    AutoProcessor,
    get_scheduler
)
def run_florence_invoice(img, task_prompt, text_input=None):
    image = Image.open(img)

    # Ensure the image is in RGB format
    if image.mode != "RGB":
        image = image.convert("RGB")
        
        model_id2 = "Falconsai/florence-2-invoice"
        model = AutoModelForCausalLM.from_pretrained(model_id2, trust_remote_code=True).eval().cuda()
        processor = AutoProcessor.from_pretrained(model_id2, trust_remote_code=True)

    with torch.no_grad():
        if text_input is None:
            prompt = task_prompt
        else:
            prompt = task_prompt + text_input
        inputs = processor(text=prompt, images=image, return_tensors="pt")
        generated_ids = model.generate(
        input_ids=inputs["input_ids"].cuda(),
        pixel_values=inputs["pixel_values"].cuda(),
        max_new_tokens=1024,
        num_beams=3
        )
        generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
        parsed_answer = processor.post_process_generation(generated_text, task=task_prompt, image_size=(image.width, image.height))

    del model
    del processor

    return parsed_answer
## Call the function as follows:
### Return all fields identified:
img = './invoice.png'
run_florence_invoice(img, '<OD>')

### Return Specific field
img = './invoice.png'
results = run_florence_invoice(img, "<CAPTION_TO_PHRASE_GROUNDING>", text_input="invoice date")

Applications

This model is ideal for automating the extraction of key information from invoices in various business and financial applications. It can significantly reduce the manual effort required for data entry and validation in accounting and bookkeeping processes.

Evaluation

The model has been evaluated on a held-out set of annotated invoice images. The evaluation metrics used included precision, recall, and F1-score for each of the identified fields. Detailed evaluation results and visualizations are available in the results directory of the repository.

Limitations

  • The model's performance is dependent on the quality and variability of the training dataset. It may not perform as well on invoices that significantly differ from those seen during training.
  • Fine-tuning was conducted with specific LoRa configurations, which may need to be adjusted for different use cases or datasets.

Contact

For more information or questions about this model, please contact the developers at [[email protected]].

License

This model is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

We would like to thank Microsoft for the development of the Florence2 vision model and the broader machine learning community for their contributions and support.

Downloads last month
37
Safetensors
Model size
1.93M params
Tensor type
F32
·
Inference Examples
Inference API (serverless) does not yet support model repos that contain custom code.