The output of ddrescue looks like this:
GNU ddrescue 1.29
Press Ctrl-C to interrupt
Initial status (read from mapfile)
rescued: 1665 MB, tried: 0 B, bad-sector: 0 B, bad areas: 0
Current status
     ipos:    2874 MB, non-trimmed:        0 B,  current rate:  21479 kB/s
     opos:    2874 MB, non-scraped:        0 B,  average rate:  21023 kB/s
non-tried:   13603 MB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:    2401 MB,   bad areas:        0,        run time:         35s
pct rescued:   15.00%, read errors:        0,  remaining time:         10m
 slow reads:        5,        time since last successful read:          0s
Copying non-tried blocks... Pass 1 (forwards)
Ddrescue scrolls forward after each pass. This keeps on the screen the final status of the previous pass, making it easier to estimate the amount of work done by the current pass.
The meaning of each field is as follows:
iposInput position. The position in the input file where data are being currently read from.
oposOutput position. The position in the output file where data are being currently written to.
non-triedSize of the part of the rescue domain pending to be tried. This is the sum of the sizes of all the non-tried blocks.
rescuedSize of the part of the rescue domain already successfully recovered. This is the sum of the sizes of all the finished blocks.
pct rescuedPercentage of the rescue domain that has been successfully recovered.
slow readsNumber of times that the read rate fell below --min-read-rate during the first two passes of the copying phase. See --min-read-rate.
triedSize of the part of the rescue domain already tried but not yet rescued. This is the sum of the sizes of all the non-trimmed, non-scraped, and bad-sector blocks.
non-trimmedSize of the part of the rescue domain pending to be trimmed. This is the sum of the sizes of all the non-trimmed blocks.
non-scrapedSize of the part of the rescue domain pending to be scraped. This is the sum of the sizes of all the non-scraped blocks.
bad-sectorTotal error size. This is the size of the part of the rescue domain formed by known bad sectors. The total error size is the sum of the sizes of all the bad-sector blocks. It increases during the trimming and scraping phases, and may decrease during the retrying phase. A sector is not marked as bad-sector and considered part of a bad area until it has been tried individually instead of as part of a large block read. Note that as ddrescue retries the bad-sector blocks, the good data found may divide them into smaller blocks, decreasing the total error size but increasing the number of bad areas.
bad areasNumber of separate bad-sector blocks inside the rescue domain. Non-trimmed and non-scraped blocks are not considered bad areas. See --max-bad-areas.
read errorsNumber of failed read attempts. See --max-error-rate.
current rateThe read rate measured during the last second.
average rateThe average read rate measured during the current run.
error rateThe read error rate measured during the last second.
run timeTime elapsed since the beginning of the current run.
remaining timeEstimated remaining time to rescue all the data in the rescue domain. The remaining time is calculated using the average rate of the last 30 seconds and does not take into account that some parts of the rescue domain may be excluded from the rescue (for example with --no-trim), or that some areas may be unrecoverable. Therefore it may be imprecise, may vary widely during the rescue, and may show a nonzero value at the end of the rescue. In particular it may go down to a few seconds at the end of the first pass, just to grow to hours or days in the following passes. Such is the nature of ddrescue; the good parts are usually recovered fast, while the rest may take a long time.
time since last successful readTime elapsed since the last successful read attempt.