Can you help me understand what my PFT (Pulmonary Function Test) is saying . It was my first time ever . I was first asked to do it. Then the person gave me some dry inhaler and then again they did the test. But I don’t understand the values and graphs and what it concludes. Please help
cd /home/daytona/workspace/attachments/2d12b569-747c-4be6-9b02-2e75efc6608b && python3 -c " import pdfplumber with pdfplumber.open('2025-11_pft_test.pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): print(f'\n===== PAGE {i+1} =====') text = page.extract_text() print(text) tables = page.extract_tables() for j, table in enumerate(tables): print(f'\n--- TABLE {j+1} ---') for row in table: print(row) "
cd /home/daytona/workspace/attachments/2d12b569-747c-4be6-9b02-2e75efc6608b && python3 -c " from pypdf import PdfReader reader = PdfReader('2025-11_pft_test.pdf') print(f'Pages: {len(reader.pages)}') for i, page in enumerate(reader.pages): text = page.extract_text() print(f'Page {i+1} text length: {len(text) if text else 0}') if text: print(text[:3000]) # Check for images if '/XObject' in page['/Resources']: xobjects = page['/Resources']['/XObject'].get_object() print(f'XObjects: {list(xobjects.keys())}') "
cd /home/daytona/workspace/attachments/2d12b569-747c-4be6-9b02-2e75efc6608b && python3 -c " from pypdf import PdfReader import base64, json reader = PdfReader('2025-11_pft_test.pdf') page = reader.pages[0] xobjects = page['/Resources']['/XObject'].get_object() img_obj = xobjects['/Im1'].get_object() print('Image type:', img_obj.get('/Subtype')) print('Width:', img_obj.get('/Width')) print('Height:', img_obj.get('/Height')) print('ColorSpace:', img_obj.get('/ColorSpace')) print('BitsPerComponent:', img_obj.get('/BitsPerComponent')) data = img_obj.data print('Data length:', len(data)) # Save the raw image data with open('/tmp/pft_raw.bin', 'wb') as f: f.write(data) print('Saved raw image data') "
# Convert PDF to image using pdftoppm or convert, then run OCR with tesseract cd /home/daytona/workspace/attachments/2d12b569-747c-4be6-9b02-2e75efc6608b # Convert PDF page to PNG pdftoppm -r 300 -png 2025-11_pft_test.pdf /tmp/pft_page ls /tmp/pft_page*
tesseract /tmp/pft_page-1.png /tmp/pft_ocr --psm 6 && cat /tmp/pft_ocr.txt
# Copy PNG to workspace so it can be served cp /tmp/pft_page-1.png /home/daytona/workspace/attachments/2d12b569-747c-4be6-9b02-2e75efc6608b/pft_page.png echo "Done"
GOLD 2024 spirometry interpretation FEV1 FVC ratio obstructive restrictive pattern

| Parameter | What it Means | Your Pre Value | Predicted Normal | % of Normal | Your Post Value | % of Normal |
|---|---|---|---|---|---|---|
| FVC (Forced Vital Capacity) | Total air you can forcefully breathe out | 3.28 L | 5.36 L | 63.6% (Low) | 3.51 L | 65.5% (Low) |
| FEV1 (Forced Expiratory Volume in 1 sec) | Air breathed out in the first second | 2.98 L | 4.46 L | 66.9% (Low) | 2.98 L | 66.9% (Low) |
| FEV1/FVC ratio | FEV1 as a fraction of FVC | 87.3% | 83.6% (predicted) | 104.7% (Normal/High) | 85.0% | 101.7% (Normal) |
| FEF25-75% | Speed of airflow through the middle portion of breathing out | 3.59 L/s | 4.92 L/s | 76% (Mildly low) | 3.38 L/s | 71.4% |
| PEF (Peak Expiratory Flow) | Fastest speed of your breath | 7.17 L/s | 9.70 L/s | 83.4% | 8.74 L/s | 90.0% |
| Obstructive (e.g., asthma, COPD) | Restrictive (e.g., scarring, stiff lungs) | |
|---|---|---|
| What's wrong | Airways are narrowed - air can't flow out fast | Lungs can't expand fully - less total air |
| FVC | Normal or slightly reduced | Reduced |
| FEV1 | Reduced | Reduced |
| FEV1/FVC ratio | Below normal (<70%) | Normal or above normal (>70%) |
| Finding | Interpretation |
|---|---|
| FVC 63%, FEV1 67% - both reduced | Lungs are not filling to full capacity |
| FEV1/FVC ratio normal (87%) | Airways themselves are not narrowed |
| Pattern = Possible Restriction | Likely a lung volume problem, not airflow problem |
| No bronchodilator response | Not typical asthma |
| Lung Age 80 | Significant reduction vs. expected for a 29-year-old |