Update 4
I've pulled in the number of rows and their first column value using this
ClearCollect(htmlRowCount,RenameColumns(Ungroup(MatchAll(htmlTextInput.Text,"<tr>(.+)<\/td>",MatchOptions.Contains).SubMatches,"SubMatches"),"Value","RowIdentifier"))
Which in this case returns 3 rows with the first value of each row, in your case the Drawing #.
I can then use that to loop through he previous formula like this adding the Drawing # to each data set (HTML row)
ForAll(htmlRowCount,
ForAll(htmlHeaders,
Collect(htmlData,{DataSetID: First(Match(RowIdentifier,"'>(.+)",MatchOptions.Contains).SubMatches).Value, ColumnName: Value, ColumnValue: First(FirstN(htmlValues,CountRows(htmlHeaders))).Value});
Remove(htmlValues,First(htmlValues)))
)
Giving me this.

So this is technically usable, however not a traditional table. It also requires that the HTML table have a unique ID in the first column of the table.
I'll attach the .msapp of this so you can play around with it.