invoice-ocr-temp / src /parser /parser.service.ts
ukzada's picture
Upload 31 files
ae85a28 verified
Raw
History Blame Contribute Delete
796 Bytes
import { Injectable } from '@nestjs/common';
@Injectable()
export class ParserService {
parseInvoice(text: string) {
const invoiceNumber = text.match(/invoice\s*#?\s*([A-Z0-9-]+)/i);
const total = text.match(/total\s*[:$]?\s*([0-9.]+)/i);
const subtotal = text.match(/subtotal\s*[:$]?\s*([0-9.]+)/i);
const tax = text.match(/tax\s*[:$]?\s*([0-9.]+)/i);
const date = text.match(/\d{1,2}\/\d{1,2}\/\d{2,4}/);
return {
vendor_name: text.split('\n')[0],
invoice_number: invoiceNumber?.[1] || null,
invoice_date: date ? new Date(date[0]) : null,
subtotal: subtotal ? parseFloat(subtotal[1]) : null,
tax: tax ? parseFloat(tax[1]) : null,
total: total ? parseFloat(total[1]) : null,
currency: 'USD',
};
}
}