Guide · Extraction

How to extract RFQ line items from PDF and email — and what to check afterwards

Before anyone can match or price a request, it has to become a list: quantity, unit, number, description — one line per item. That sounds like typing. It is not, because the request arrives as a spreadsheet with a letterhead above the table, as a PDF that only looks like a table, or as three sentences in an email. This guide shows how to extract RFQ line items from PDF and email without inventing any, where extraction typically breaks, and how to test a tool for it with your own requests.

Updated October 5, 2026

What a clean line item consists of

A line you can work with has four parts, and a fifth that is easy to forget:

  • Quantity — a number someone actually wrote in the request, not a silently assumed one.
  • Unit — pieces, metres or a pack. If the customer wrote “box”, the line must still say box: the conversion comes later and needs it.
  • Number — and whose it is: the customer's own part number, the manufacturer's part number or your article number.
  • Description — complete, including the second and third line that carry the size or the material.
  • Source — the place in the original the line came from, so that a reviewer can compare without searching.

Extraction is finished when these are filled or visibly missing. Deciding which of your articles is meant is the next step. A tool that blurs the two hides reading errors behind plausible matches.

Email text, PDF, spreadsheet: three ways of reading

The same five lines need a different reading method depending on how they arrive. Quotrail accepts Excel (.xlsx), CSV, PDF and email files (.eml); an email and each of its readable attachments are treated as separate documents.

Scroll horizontally to see all columns.

How each source is read
SourceWhat makes it hardHow Quotrail reads itReviewer checks
Spreadsheet (Excel, CSV)The header is rarely in row 1; column names differ from customer to customerLooks for the header row in the first 15 rows and recognises the columns by their names in German, English, French and Italian. It needs a quantity column and a column with a description or a numberThe note that no line table was recognised, if a sheet is laid out differently
PDF with a text layerA PDF knows neither rows nor columns, only pieces of text at coordinatesRebuilds rows and columns from the coordinates, then tries three readings in decreasing strictness: the numbered line block of an ERP printout, a table with a header row, running textThat every line of the original has arrived
Scanned PDFThere is no text to read, only an imageAccepts the file and flags it as a scan without a text layer. It is not read; there is no text recognition (OCR)Add the lines by hand or ask for the list in another format
Email textLines sit between the greeting, explanations and the signatureReads line by line and conservatively: a line becomes a line item only with a quantity — or with a number, if it is shaped like a line item. What looks like one without meeting these conditions becomes an open questionThe open questions

If an attachment cannot be read — a format outside this list, a damaged file — the rest of the email is still processed and the attachment is listed as skipped. A password-protected PDF that you drop in directly is rejected with a message asking for an unprotected copy.

What typically goes wrong

Scroll horizontally to see all columns.

Typical extraction traps
In the documentThe trapWhat Quotrail doesReviewer checks
A description that continues on the next lineThe second line becomes an item of its own, or is lostIn tables and PDFs, attaches a row that contains text only — no quantity, no number — to the line aboveThat the description is complete
A totals row under the tableIt is read as an item or glued to the last descriptionSorts out total and subtotal rows before they can attach to the last lineNothing
“M12 x 40” next to “x3”A dimension read as a quantityReads “x3” at the end of a line as the quantity only when it does not follow a digit; in “M12 x 40” the 40 stays a dimensionThe quantity, if none is given
“2 bottles … 50 ml”The 50 is taken as the quantityWith a quantity and unit in front and a measure at the end, the front one is the quantity; the measure stays in the descriptionNothing
Customer part number and manufacturer part number in two columnsOne is lost, or the two are swappedKeeps them as separate fields — customer part number, manufacturer part number, manufacturer — when the column names say which is whichColumns with unusual names
A number in running textNothing says whose number it isTakes the number as written. Whose number it is gets settled in matching — against your catalog and the numbers already known for this customerThe match, not the extraction
Greeting, signature, phone number, dateA phone number or a date becomes a part numberSkips greeting and signature lines and phone lines; a date is not treated as a numberNothing
“Item 3 is cancelled”, “same as last quote”A change to an earlier request is read as a new itemCreates no line; the sentence becomes an open question, to be carried over by handThe earlier quote

Number formats matter here too: in a spreadsheet, the language of the column headers decides how “1.000” is read, independently of the covering email, and a cell that Excel stores as a number is taken as that number. How quantities are converted afterwards is covered in the guide on units, packs and part number errors.

Worked example: one email, two attachments

Fictional example. The request, the customer and the article data are invented to show how the documented rules treat each part of a request; they are not a measurement of extraction quality.

A buyer sends an email with two PDFs: a request printed from their ERP and a scanned sketch. The email text adds one sentence. This is what arrives in review:

Scroll horizontally to see all columns.

What is read from each part
In the requestWhat is readResultReviewer's job
ERP PDF, line 10: “Shaft seal 25x47x7 … 20 PCS”, indented line below: “NBR, with dust lip”Quantity 20, unit piece; the two text lines form one descriptionOne line itemNothing at this step
Line 20: “Cable ties 200 mm black … 3 BOX”Quantity 3 in a pack unit, not in piecesOne line item; the pack stays as the unitLater, the conversion to pieces with the pack size
Line 30: quantity “1.000” in a German documentRead as one thousand, by the language of the documentOne line item; the quantity is flagged as ambiguousThe intended quantity
The total line under the itemsNot an itemNothing is createdNothing
Second PDF: a scanned sketchNo text layerFlagged as a scan, not readLook at the sketch; if it contains an item, add the line by hand
Email text: “Please also quote the seals, same as last quote”A reference to an earlier request, no quantityOpen question; no line is inventedCarry the items over from the earlier quote or ask the customer

Each line keeps the place it came from. In review the original stays visible next to the lines, and the passage that belongs to the active line is highlighted — nobody has to compare two windows.

Only now does matching begin. What happens to these three lines next is described in the overview of RFQ automation for technical distributors.

What can be automated and what a person must check

Extraction suits fixed rules well, because the question is narrow: what is written here? The reading rules described on this page are deterministic — the same document yields the same lines. Rules can reliably:

  • find the header row and the columns of a table,
  • rebuild the lines of a PDF and attach continuation lines,
  • map unit spellings in four languages to the same units,
  • read number formats by the language of the document and flag the ambiguous ones,
  • leave out greetings, signatures and total rows.

A person is needed wherever the document does not say enough: scans, sentences that refer to an earlier quote, lines without a quantity, quantities flagged as ambiguous — and the simple question of whether the list is complete. A missing line can be added by hand, with a note on where it came from. The rule to insist on is the one behind all of this: what could not be read is shown as unread, never filled in.

Testing a tool with your own requests

A demo shows one tidy spreadsheet. Your inbox looks different. A short test with your own documents tells you more:

  1. Collect real requests of every kind you receive: spreadsheets, PDFs from an ERP, PDFs put together by hand, scans, free-text emails and forwarded emails with attachments.
  2. Count the line items in each original by hand before you let the tool read anything.
  3. Compare: which lines are missing, which were invented, which were merged or split, where is the quantity or the unit wrong?
  4. Watch what the tool does with what it cannot read. Does it say so — or does it deliver something plausible?
  5. Check that every line leads back to its place in the original.

Quotrail never sends a quote on its own, and every quote is approved by a second authorised person. See the plans and prices, book a call to run your own requests through it, or read on about customer part number matching.

Quotrail Support

I explain Quotrail, its workflows and plans using product documentation. I cannot access account data or make changes.

I am not a lawyer. Legal information is general guidance, not advice on your individual case. Do not enter confidential customer data, passwords or documents. Privacy Policy

Find a suitable plan