Extract words with clue numbers in a Crossword puzzle
Charcoal, 118 bytes

ＷＳ⊞υιＰ⪫υ¶≔⟦⟧θＦυ«Ｆι«Ｆ‹ κ«≔✂ιⅈＬι¹η≔⪫ＫＤ⁻Ｌυⅉ↓ωζ≡÷⌕2374ce6⍘↨ＥＫＶ‹ μ²φ³¦²⊞θ⟦ηζ⟧¹⊞θ⟦ηω⟧⁰⊞θ⟦ωζ⟧»→»⸿»⎚Ｅ²⪫ＥΦＥθ⟦⊕μ§⪪§λι ⁰⟧§λ¹⪫λ ¦ 


Try it online! Link is to verbose version of code. Takes input as a rectangular string of newline-terminated lines. Explanation:

ＷＳ⊞υιＰ⪫υ¶


Input the rectangle and print it to the canvas.

≔⟦⟧θ


Start off with no clues.

Ｆυ«Ｆι«


Loop over the rows and columns.

Ｆ‹ κ«


If the current character is not a space, then...

≔✂ιⅈＬι¹η


Get the substring of the current line starting at this character.

≔⪫ＫＤ⁻Ｌυⅉ↓ωζ


Get the substring of the current column starting at this character by reading it from the canvas.

≡÷⌕2374ce6⍘↨ＥＫＶ‹ μ²φ³


Check which orthogonally adjacent characters are spaces.

²⊞θ⟦ηζ⟧


If only the characters to the left and above are spaces, then a word starts both across and down.

¹⊞θ⟦ηω⟧


Otherwise if the character to the left is a space but the character to the right is not, then a word starts across but not down.

⁰⊞θ⟦ωζ⟧


Otherwise if the character above is a space but the character below is not, then a word starts down but not across.

»→»⸿»


Move on to consider the next character on each iteration.

⎚


Clear the canvas.

Ｅ²⪫ＥΦＥθ⟦⊕μ§⪪§λι ⁰⟧§λ¹⪫λ ¦ 


Map over the across and down clues, numbering them all, but keeping only those clues with words in the respective direction.

(Out of interest I tried using just string manipulation instead of canvas operations but that cost 29 bytes.)